{
 "cells": [
  {
   "cell_type": "code",
   "execution_count": 379,
   "metadata": {},
   "outputs": [],
   "source": [
    "import numpy as np \n",
    "import pandas as pd \n",
    "import matplotlib.pyplot as plt \n",
    "%matplotlib inline \n",
    "import seaborn as sns \n",
    "\n",
    "df = pd.read_csv('titanic_train.csv')"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 380,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "(891, 12)"
      ]
     },
     "execution_count": 380,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "df.shape"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 381,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>PassengerId</th>\n",
       "      <th>Survived</th>\n",
       "      <th>Pclass</th>\n",
       "      <th>Name</th>\n",
       "      <th>Sex</th>\n",
       "      <th>Age</th>\n",
       "      <th>SibSp</th>\n",
       "      <th>Parch</th>\n",
       "      <th>Ticket</th>\n",
       "      <th>Fare</th>\n",
       "      <th>Cabin</th>\n",
       "      <th>Embarked</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>0</th>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "      <td>3</td>\n",
       "      <td>Braund, Mr. Owen Harris</td>\n",
       "      <td>male</td>\n",
       "      <td>22.0</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "      <td>A/5 21171</td>\n",
       "      <td>7.2500</td>\n",
       "      <td>NaN</td>\n",
       "      <td>S</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>1</th>\n",
       "      <td>2</td>\n",
       "      <td>1</td>\n",
       "      <td>1</td>\n",
       "      <td>Cumings, Mrs. John Bradley (Florence Briggs Th...</td>\n",
       "      <td>female</td>\n",
       "      <td>38.0</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "      <td>PC 17599</td>\n",
       "      <td>71.2833</td>\n",
       "      <td>C85</td>\n",
       "      <td>C</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2</th>\n",
       "      <td>3</td>\n",
       "      <td>1</td>\n",
       "      <td>3</td>\n",
       "      <td>Heikkinen, Miss. Laina</td>\n",
       "      <td>female</td>\n",
       "      <td>26.0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>STON/O2. 3101282</td>\n",
       "      <td>7.9250</td>\n",
       "      <td>NaN</td>\n",
       "      <td>S</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "</div>"
      ],
      "text/plain": [
       "   PassengerId  Survived  Pclass  \\\n",
       "0            1         0       3   \n",
       "1            2         1       1   \n",
       "2            3         1       3   \n",
       "\n",
       "                                                Name     Sex   Age  SibSp  \\\n",
       "0                            Braund, Mr. Owen Harris    male  22.0      1   \n",
       "1  Cumings, Mrs. John Bradley (Florence Briggs Th...  female  38.0      1   \n",
       "2                             Heikkinen, Miss. Laina  female  26.0      0   \n",
       "\n",
       "   Parch            Ticket     Fare Cabin Embarked  \n",
       "0      0         A/5 21171   7.2500   NaN        S  \n",
       "1      0          PC 17599  71.2833   C85        C  \n",
       "2      0  STON/O2. 3101282   7.9250   NaN        S  "
      ]
     },
     "execution_count": 381,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "df.head(3)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 382,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "PassengerId      int64\n",
       "Survived         int64\n",
       "Pclass           int64\n",
       "Name            object\n",
       "Sex             object\n",
       "Age            float64\n",
       "SibSp            int64\n",
       "Parch            int64\n",
       "Ticket          object\n",
       "Fare           float64\n",
       "Cabin           object\n",
       "Embarked        object\n",
       "dtype: object"
      ]
     },
     "execution_count": 382,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "df.dtypes"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 383,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "Name        object\n",
       "Sex         object\n",
       "Ticket      object\n",
       "Cabin       object\n",
       "Embarked    object\n",
       "dtype: object"
      ]
     },
     "execution_count": 383,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "df.dtypes[df.dtypes == 'object']"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 384,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<Figure size 1008x1008 with 9 Axes>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "df.hist(figsize=(14,14), xrot=45)\n",
    "plt.show()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 385,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>PassengerId</th>\n",
       "      <th>Survived</th>\n",
       "      <th>Pclass</th>\n",
       "      <th>Age</th>\n",
       "      <th>SibSp</th>\n",
       "      <th>Parch</th>\n",
       "      <th>Fare</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>count</th>\n",
       "      <td>891.000000</td>\n",
       "      <td>891.000000</td>\n",
       "      <td>891.000000</td>\n",
       "      <td>714.000000</td>\n",
       "      <td>891.000000</td>\n",
       "      <td>891.000000</td>\n",
       "      <td>891.000000</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>mean</th>\n",
       "      <td>446.000000</td>\n",
       "      <td>0.383838</td>\n",
       "      <td>2.308642</td>\n",
       "      <td>29.699118</td>\n",
       "      <td>0.523008</td>\n",
       "      <td>0.381594</td>\n",
       "      <td>32.204208</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>std</th>\n",
       "      <td>257.353842</td>\n",
       "      <td>0.486592</td>\n",
       "      <td>0.836071</td>\n",
       "      <td>14.526497</td>\n",
       "      <td>1.102743</td>\n",
       "      <td>0.806057</td>\n",
       "      <td>49.693429</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>min</th>\n",
       "      <td>1.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>1.000000</td>\n",
       "      <td>0.420000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>0.000000</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>25%</th>\n",
       "      <td>223.500000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>2.000000</td>\n",
       "      <td>20.125000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>7.910400</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>50%</th>\n",
       "      <td>446.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>3.000000</td>\n",
       "      <td>28.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>14.454200</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>75%</th>\n",
       "      <td>668.500000</td>\n",
       "      <td>1.000000</td>\n",
       "      <td>3.000000</td>\n",
       "      <td>38.000000</td>\n",
       "      <td>1.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>31.000000</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>max</th>\n",
       "      <td>891.000000</td>\n",
       "      <td>1.000000</td>\n",
       "      <td>3.000000</td>\n",
       "      <td>80.000000</td>\n",
       "      <td>8.000000</td>\n",
       "      <td>6.000000</td>\n",
       "      <td>512.329200</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "</div>"
      ],
      "text/plain": [
       "       PassengerId    Survived      Pclass         Age       SibSp  \\\n",
       "count   891.000000  891.000000  891.000000  714.000000  891.000000   \n",
       "mean    446.000000    0.383838    2.308642   29.699118    0.523008   \n",
       "std     257.353842    0.486592    0.836071   14.526497    1.102743   \n",
       "min       1.000000    0.000000    1.000000    0.420000    0.000000   \n",
       "25%     223.500000    0.000000    2.000000   20.125000    0.000000   \n",
       "50%     446.000000    0.000000    3.000000   28.000000    0.000000   \n",
       "75%     668.500000    1.000000    3.000000   38.000000    1.000000   \n",
       "max     891.000000    1.000000    3.000000   80.000000    8.000000   \n",
       "\n",
       "            Parch        Fare  \n",
       "count  891.000000  891.000000  \n",
       "mean     0.381594   32.204208  \n",
       "std      0.806057   49.693429  \n",
       "min      0.000000    0.000000  \n",
       "25%      0.000000    7.910400  \n",
       "50%      0.000000   14.454200  \n",
       "75%      0.000000   31.000000  \n",
       "max      6.000000  512.329200  "
      ]
     },
     "execution_count": 385,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "df.describe()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 386,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>Name</th>\n",
       "      <th>Sex</th>\n",
       "      <th>Ticket</th>\n",
       "      <th>Cabin</th>\n",
       "      <th>Embarked</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>count</th>\n",
       "      <td>891</td>\n",
       "      <td>891</td>\n",
       "      <td>891</td>\n",
       "      <td>204</td>\n",
       "      <td>889</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>unique</th>\n",
       "      <td>891</td>\n",
       "      <td>2</td>\n",
       "      <td>681</td>\n",
       "      <td>147</td>\n",
       "      <td>3</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>top</th>\n",
       "      <td>Ilett, Miss. Bertha</td>\n",
       "      <td>male</td>\n",
       "      <td>347082</td>\n",
       "      <td>G6</td>\n",
       "      <td>S</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>freq</th>\n",
       "      <td>1</td>\n",
       "      <td>577</td>\n",
       "      <td>7</td>\n",
       "      <td>4</td>\n",
       "      <td>644</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "</div>"
      ],
      "text/plain": [
       "                       Name   Sex  Ticket Cabin Embarked\n",
       "count                   891   891     891   204      889\n",
       "unique                  891     2     681   147        3\n",
       "top     Ilett, Miss. Bertha  male  347082    G6        S\n",
       "freq                      1   577       7     4      644"
      ]
     },
     "execution_count": 386,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "df.describe(include='object')"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 387,
   "metadata": {},
   "outputs": [],
   "source": [
    "df['Ticket_missing'] = df.Ticket.isnull().astype(int)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 388,
   "metadata": {},
   "outputs": [],
   "source": [
    "df['Cabin_missing'] = df.Cabin.notnull().astype(int)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 389,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "               Survived\n",
      "Cabin_missing          \n",
      "0                   687\n",
      "1                   204                Survived\n",
      "Cabin_missing          \n",
      "0                   206\n",
      "1                   136\n"
     ]
    }
   ],
   "source": [
    "cm = df[['Cabin_missing', 'Survived']].groupby(['Cabin_missing'])\n",
    "print(cm.count(), cm.sum())"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 390,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>PassengerId</th>\n",
       "      <th>Survived</th>\n",
       "      <th>Pclass</th>\n",
       "      <th>Age</th>\n",
       "      <th>SibSp</th>\n",
       "      <th>Parch</th>\n",
       "      <th>Fare</th>\n",
       "      <th>Ticket_missing</th>\n",
       "      <th>Cabin_missing</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>PassengerId</th>\n",
       "      <td>1.000000</td>\n",
       "      <td>-0.005007</td>\n",
       "      <td>-0.035144</td>\n",
       "      <td>0.036847</td>\n",
       "      <td>-0.057527</td>\n",
       "      <td>-0.001652</td>\n",
       "      <td>0.012658</td>\n",
       "      <td>NaN</td>\n",
       "      <td>0.019919</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>Survived</th>\n",
       "      <td>-0.005007</td>\n",
       "      <td>1.000000</td>\n",
       "      <td>-0.338481</td>\n",
       "      <td>-0.077221</td>\n",
       "      <td>-0.035322</td>\n",
       "      <td>0.081629</td>\n",
       "      <td>0.257307</td>\n",
       "      <td>NaN</td>\n",
       "      <td>0.316912</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>Pclass</th>\n",
       "      <td>-0.035144</td>\n",
       "      <td>-0.338481</td>\n",
       "      <td>1.000000</td>\n",
       "      <td>-0.369226</td>\n",
       "      <td>0.083081</td>\n",
       "      <td>0.018443</td>\n",
       "      <td>-0.549500</td>\n",
       "      <td>NaN</td>\n",
       "      <td>-0.725541</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>Age</th>\n",
       "      <td>0.036847</td>\n",
       "      <td>-0.077221</td>\n",
       "      <td>-0.369226</td>\n",
       "      <td>1.000000</td>\n",
       "      <td>-0.308247</td>\n",
       "      <td>-0.189119</td>\n",
       "      <td>0.096067</td>\n",
       "      <td>NaN</td>\n",
       "      <td>0.249732</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>SibSp</th>\n",
       "      <td>-0.057527</td>\n",
       "      <td>-0.035322</td>\n",
       "      <td>0.083081</td>\n",
       "      <td>-0.308247</td>\n",
       "      <td>1.000000</td>\n",
       "      <td>0.414838</td>\n",
       "      <td>0.159651</td>\n",
       "      <td>NaN</td>\n",
       "      <td>-0.040460</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>Parch</th>\n",
       "      <td>-0.001652</td>\n",
       "      <td>0.081629</td>\n",
       "      <td>0.018443</td>\n",
       "      <td>-0.189119</td>\n",
       "      <td>0.414838</td>\n",
       "      <td>1.000000</td>\n",
       "      <td>0.216225</td>\n",
       "      <td>NaN</td>\n",
       "      <td>0.036987</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>Fare</th>\n",
       "      <td>0.012658</td>\n",
       "      <td>0.257307</td>\n",
       "      <td>-0.549500</td>\n",
       "      <td>0.096067</td>\n",
       "      <td>0.159651</td>\n",
       "      <td>0.216225</td>\n",
       "      <td>1.000000</td>\n",
       "      <td>NaN</td>\n",
       "      <td>0.482075</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>Ticket_missing</th>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>Cabin_missing</th>\n",
       "      <td>0.019919</td>\n",
       "      <td>0.316912</td>\n",
       "      <td>-0.725541</td>\n",
       "      <td>0.249732</td>\n",
       "      <td>-0.040460</td>\n",
       "      <td>0.036987</td>\n",
       "      <td>0.482075</td>\n",
       "      <td>NaN</td>\n",
       "      <td>1.000000</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "</div>"
      ],
      "text/plain": [
       "                PassengerId  Survived    Pclass       Age     SibSp     Parch  \\\n",
       "PassengerId        1.000000 -0.005007 -0.035144  0.036847 -0.057527 -0.001652   \n",
       "Survived          -0.005007  1.000000 -0.338481 -0.077221 -0.035322  0.081629   \n",
       "Pclass            -0.035144 -0.338481  1.000000 -0.369226  0.083081  0.018443   \n",
       "Age                0.036847 -0.077221 -0.369226  1.000000 -0.308247 -0.189119   \n",
       "SibSp             -0.057527 -0.035322  0.083081 -0.308247  1.000000  0.414838   \n",
       "Parch             -0.001652  0.081629  0.018443 -0.189119  0.414838  1.000000   \n",
       "Fare               0.012658  0.257307 -0.549500  0.096067  0.159651  0.216225   \n",
       "Ticket_missing          NaN       NaN       NaN       NaN       NaN       NaN   \n",
       "Cabin_missing      0.019919  0.316912 -0.725541  0.249732 -0.040460  0.036987   \n",
       "\n",
       "                    Fare  Ticket_missing  Cabin_missing  \n",
       "PassengerId     0.012658             NaN       0.019919  \n",
       "Survived        0.257307             NaN       0.316912  \n",
       "Pclass         -0.549500             NaN      -0.725541  \n",
       "Age             0.096067             NaN       0.249732  \n",
       "SibSp           0.159651             NaN      -0.040460  \n",
       "Parch           0.216225             NaN       0.036987  \n",
       "Fare            1.000000             NaN       0.482075  \n",
       "Ticket_missing       NaN             NaN            NaN  \n",
       "Cabin_missing   0.482075             NaN       1.000000  "
      ]
     },
     "execution_count": 390,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "correlations = df.corr()\n",
    "correlations"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 391,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "<matplotlib.axes._subplots.AxesSubplot at 0x26d1d1ecba8>"
      ]
     },
     "execution_count": 391,
     "metadata": {},
     "output_type": "execute_result"
    },
    {
     "data": {
      "image/png": "iVBORw0KGgoAAAANSUhEUgAAAZAAAAEuCAYAAACgf0TJAAAABHNCSVQICAgIfAhkiAAAAAlwSFlzAAALEgAACxIB0t1+/AAAADl0RVh0U29mdHdhcmUAbWF0cGxvdGxpYiB2ZXJzaW9uIDIuMi4yLCBodHRwOi8vbWF0cGxvdGxpYi5vcmcvhp/UCwAAIABJREFUeJzs3Xd8U1X/wPFPku5JmW2hzMJhjwIVsCqguFEUVKYgshHRsmVvWwQZCihD/D1sFH3EwezDUECWDBmHhz1bKJSOpIOM3x8JtQ9WhTRLPO/XKy97b27u9ySY+71n5ByNxWJBURRFUe6X1t0FUBRFUf6eVAJRFEVR7KISiKIoimIXlUAURVEUu6gEoiiKothFJRBFURTFLl7uLsDf0e3UM24Z+7y2zmiXx8zValweE6CE0eSWuMneOrfEDTG5Zzi9zk3D+F9OXu7ymF+Hd3R5TIA2ycuL/CW6n2uOd8nKLvvSqgSiKIri6czuuaH6KyqBKIqieDqL2d0lKJRKIIqiKJ7OrBKIoiiKYgeLqoEoiqIodlE1EEVRFMUuqgaiKIqi2MV0290lKJT6IaGTHD56gm5vDQXgwqUrdOk7iNf7DmbCtDmYbdXRuYuX0b7HQDr1jufIMenU8uj8fXj832MJjo5wapzCNEnoTsyI11wWz6dkCC0PfERgdKTLYpasV5nnvhzNc2tH0/KTt9H5erskbkSrBjz+wwRarhtHpU4tXBITIKxBFR5ZO8pl8dxF46Wj4Zy+xH09hsd+mEj4kzHuKYjZfO8PF3JYDUQI0RxYDRwDLIA/sExKOcdRMZxJCJEspQy/a9/TQHspZbf7OdfiZWtYtz4Jfz9fABJnf8qAnl2JjanL+MQ5JO3YRWR4Gfb9coQVC2aSnHKdd0ZOYtWi2Q57PwWF1atEo4Tu+EcUd8r5/0zVzi0JqxFFyq4TLomn8dJRZ1oPTDl5Lol3R1zim2zpPZvMcylU69CcoLIlST9z1akxNV466o/vzOZnRmM05NLym7Fc2XiA3OvpTo1btf/zlG8Xh8mQ69Q4niCqXRx5aVnsHzAP77AgWmyaQvLGAy4vR1E60YUQvsBnQGUgA+gPlABmAUZgo5RyvD3ndnQNJElK2VxK2QJ4DBgkhCjm4BgeLyoygplTfrs7OyZP0bhBHQAeadqI3fsOcuDwUZrFxqDRaIgIL43JZOJm2i2nlEfn482P3T8k89QVp5z/j5RsGE2pmGhOLk1yWcwa4zpx/vPN5CanuSxmaOUIctOyqN3jKZ79YiS+xQKdnjwAQqpGknUuhdvpBiy3TaTuOUmph4TT4+rPpbC7+0ynx/EEl7/ZzfGENfnbFpOb+iKKVgPpCWRJKZsAA4CPgPlARyAOeEgIYVfVypl9IMGACagnhBhr2xcAvA5cwFpbCcVaUxkqpdwqhFgCVAH8gA+klKuEEI8Bk23nOg30BjoBz9rOVwVIkFIuEULEAh8DmcA1IEdK2U0IMQDrh2UBVkopZ9tilbA9nrtTaCFEDWAxoLc97vtK1KpFHJevpuRvWywWNBrr7AKBAf5kZunR6w2EhgbnHxMYEECW3kDxMMfn29S9Jx1+zr/iX7oY9eNf5j9vzqTiCw+5JGa51x4l70YmqVsPE/32iy6JCeBbPIjSjaqya/TnpJ9N4cklg0g9fI6rPx11alyvYH9uZ2TnbxuzsvEOCXBqTIAr3+0lIKqk0+N4gju1LK9AP2IXDuT4+6vdU5CidaLXBH4AkFJKIURjIEVKeRpACLEBeBy476qVoxNISyHEVsAM3Maa7WoBnaWUV4QQ7wGvAF8D4cATQGmgmhAiGGgBNMJ6oX9SCKEBFgBxUsprQoiJQDfbuUOllE8JIaoC64AlWLNqFynlUSHEZKCsEKIm8BrWTGsBNts+MLDWmD4EECL/zm0iMEZKuUkIMQyoUdQPRVtgPim9IZuQoCACAwMwGLIL7DcQHBRY1FD5ag97hVKx1QDY+soULGbXzHlUf2g7SjcWhNWIQn85lcf/NQT/0qF4+fuQfvoKp1fvcFrsch2agwVKPlKbkNoVqP9RX/Z1+cBpTToNh7SjTKwgtEoEGedSuPVfaw3v0tbDlKxb0WkJpNawVygZW41iNcpz45fT+fu9gvzJSzc4JeY/mX9kcWI/i+fskk1c+mqnewpRtE70g8DzQoivgYew3rifLvB8Jtbmrfvm6ASSJKVsX3CHEOJFYLYQIgsoC/xku8B/DKwAvIHZUspMIcRbwKdACLAUKAVEAKttF3h/YCPWN3/QFuIi1hoLQKSU8s63dgfQHqgNVAC22PaHAdG2vwvrua4F7LH9/RMOSCDVq1Vhz4HDxMbUZceufcTG1KV8uUhmzF1Etw5tSbmWitliIaxYaFFD5fu1QLXblQ4mfvG7fVVefYTQKpFOTR4Au9tMyP+7ydrRHBm6yKn9AfunWd+r1ltHu23TCK5YhsxzKYQ/JDi5YpvT4h61/dtqvHQ8tS0R72KBGPU5lGpSHTnvO6fF/SfyLRlCs5UjOPTeElJ/dG6N8k8VrXN8Mdbr2H+wXtMOAQXvVoMBu9rPXTGMdyFQ2ZYgPgc0Qog6QLCU8jkhRASwUwixH2gopXxJCOGHNTEsAy4BL0op04UQLwBZQHmstYm7XRRC1JRSHgOa2PZJ4CjwjJTSIoR4FziCtSZU2L/KCaApsB5o7IgPYMhbPRmXMItZ841UqhjFky3i0Ol0xNSrTafe8ZjNZkbF93NEKMUNzLdN7Bi8kBYf9QM0XNv/Xy4mHfzL1xWVxWji0LilPLpiGBqtlrMrtpHjwr6ff4JqA9vgXSyQ6vEvQfxLAOzsmIA5x8XDaovWhNUY+FFK+a4QohHWZv/qQogqwBngKcCuTnSNxUHTOdtGYfUppAYyA3gaa19CCnADa9PWUqyJIA/4xLY9D2sVKwv4VkqZIIR4EhiDtcM/A2sfyrNAdSnlcFuyOSGlrGhr25tje30ecFlK2VMIMQRoA/hirV0MABZh7Q9ZbytnspQy3JbQVmFtJruOrR+l4HtS07k7n5rO3TXUdO7O54jp3HMPb7jnfyjfuk/9TzwhRElgJdZaxy3gTazX3pmADusorJH2lMthCcQTCCH6A6ullNeFEJOAPCnlhL963f1SCcT5VAJxDZVAnM8RCSTn0Pf3/A/lV+9ZtR6InVKAjbb+lnSgq5vLoyiKUnRqKhPnk1J+Afy+F1dRFOXvzGR0dwkK9UAlEEVRlAeSWpFQURRFsYtqwlIURVHsotYDURRFUeyiaiCKoiiKXVQN5MHhjt9jALx8ZKLLY3ZuGO/ymAAttEFuiRvgpu9pCbN7FgyqUvamW+K6Q9Mal91dBLtZPHRBKZVAFEVRPJ2qgSiKoih2UX0giqIoil1UDURRFEWxi6qBKIqiKHZRU5koiqIodlFNWIqiKIpdVAJRAHT+PjRfOYI9gz4l89RVh5//8NETzJi3mCUfJXLh0hVGTp6OBg3RlSswalB/tFotcxcvY/vOPeh0OoYP7E2dmuKvT3yPYp9pSpu+L2OxWNiyYiNJKzfnPxdSIpSp305ncuexXDntnDH5Vds0o26vZ7GYzZxYtY1j/9ry1y9yoCYJ3cm7pefA1FVOj6Xx0lFjTn/8o0phMZk5MegTDKeuOCeYl44SYwfjFRmOxtub9IXLyD1ynBKj49GGBIFWy40xCRgvOf7/aZfTagkZPARdVBSYzGQkvo/GP4DgtweC2YTl9m0ypk7BnObC1R9VH8i9EUIMB57AutysBXhPSrnfznPNBGZIKS/Y+fqVwHwp5VZ7Xn+3sHqVaJTQHf+I4o443e8sXraGdeuT8PfzBSBx9qcM6NmV2Ji6jE+cQ9KOXUSGl2HfL0dYsWAmySnXeWfkJFYtmu2Q+Bqtlo7DujCi9WBy9DnM2DyHvRt+JjMtE52Xjp5T+pKXk+uQWH+kyaiOrH5iGLf1ObyWlMipb3aRl25wasw7qnZuSViNKFJ2nXBJvBJPNECj07H/+dGEPVqHyiM68Oub050SK/DZJzCnZ5AyOgFtaAgRy+eTs/cX9D9swbBpG76N6uFdsfwDkUB8mzYDIG3AW3jXq09Qv/5og4LInD0L4+lT+LduTUCHjmTN/dh1hfLQGojW3QUoSAhRE3gBaCWlfBIYhnVBeLtIKd+xN3k4g87Hmx+7f0imk+4SoyIjmDllVP72MXmKxg3qAPBI00bs3neQA4eP0iw2Bo1GQ0R4aUwmEzfTbjkkvsVsJv7xt8jONBAcFgwayDHkANB5ZDc2L1tPWopz79punriAT3AAOl8f0GC9BXGBkg2jKRUTzcmlSa4JCBhOX0XjpQWNBq/gACxG53W0GjZt49bcJfnbFpMJ3/q10JUuSel5iQQ+8zg5+w45Lb4r5f70IxkffACALrwM5rQ00ieMx3j6lPUAnQ7y8lxbKIv53h8u5Gk1kGtY1+rtLoRYL6U8KISIFUJsxbre+gkhRB8gHFgCrMO6xvr3wBtATSmlRQjxMbAZGAj0wbreejsp5TkhxCtAHNZ11hcBJWyx35ZSHrEti9sDuAqUduSbS9170pGn+51WLeK4fDUlf9tisaDRWFe3DAzwJzNLj15vIDQ0OP+YwIAAsvQGiocVc0gZzCYzsU83ofvEXvyStB/jbROPtWtJ5s0MDm0/yIv92jkkzh+5KS/R9vuJGA25nP1hH3kZzq99+JcuRv34l/nPmzOp+MJDTo93h0mfg39UKZr89CHexUM41Pl9p8WyZFtvBDQB/pRKHMOtuZ9RcvxQzJlZXOs7lNCenQnp9hrp8z93WhlcymwiZPgIfOMeIX3cGMw3rVO+eNeqRUCbl7k5cIBry+Oho7A8qgYipUzFWgN5GNglhDgBPP8nLwkHnpRSJgKHgUeEEL5Ac6zJ5Y5FwOu2v7sBC4D3gC1SyhZAL2CeECIUa9JpArwI+BT1PdUe9gotvhxJiy9HonHx+uLaAvH0hmxCgoIIDAzAYMgusN9AcFBgkeK8NrgjY1ZOYszKSWi0Wvas303f2Dfx8vbisbbNafHq49SJq8eYlZOoWLMS/WcMJLSUYxIWQOMh7Xhh9Ui6HZlPxVYxLG/2LsuavoNfyRAqPxfrsDh3qz+0HU+uGckLSe/jVzKEx/81hNr9W1PppaZUefURp8W9I6r3c9zYeojdzd5hT8sh1JzTH62vt9Pi6cqUosynH5D1/WYM65Mwp2eQvW0XAIbtu/GtWc1psd0h4/2p3OjSmZBBQ8DPD98WLQh+dxC3RgzDkp7u2sKYzff+cCGPqoEIIaKBDClld9t2I6y1i+QChxW8Cp+VUt6pSy7AugZ6OPCNlNIoRH7n8DLgRyHEQiBESvmrEKIO0FII8ZrtmDCgOnBUSplri7+nqO/p14Q1RT2F3apXq8KeA4eJjanLjl37iI2pS/lykcyYu4huHdqSci0Vs8VCWLHQIsVZ9cFyAPyD/BmzYgKTu4zDmGckx5CD2Wxh3Ksj848ds3ISC0fOI/26Y5rNAPZOs65iHFS2BE8vfBdjTh4Ws4Wc1Ax8Q4uWHP/MwcTfr55c5dVHCK0SyenVO5wW9w7jLX1+s9XtW1lovHSgc849obZ4McrMfZ+bCR+Rs+cXAHIO/op/XCz67zbjF1OHvDPnnRLb1fxaPYm2VCkMy5dhyc0BiwW/uEfwb/0Cae8OxJKZ6fpCeWgfiEclEKAu0FcI0VpKmQOcBNKxNlNFACeAGODOEJ6Cn+oWIBEoC7xV8KRSygwhxH7gQ+Az2+4TwFIp5XIhRGmszVZngJpCCH8gD2iAtfnrb2nIWz0ZlzCLWfONVKoYxZMt4tDpdMTUq02n3vGYzWZGxfdzWLzsrGx+/Ho741ZPwWQ0cuHEeXZ8tc1h5/8rWZdvcGxZEm3WjsGUZyTj/DXkmu0ui+9qFz/5luoz+xHz7/FofLw4M3UFZoNzBimEdu+INjiY0B6dCe3RGYDUsQmUGD2IoHatsWTpSX1vilNiu1rOju2EDhtO2MzZ4OVF5sdzCBk6HNO1FIpNsM6InXfoEPoln/3FmRzI4qLOvPuksXhYwYQQI4FXgSysTWwJWC/mHwAXsSaPC1j7QFZKKZsUeO17wBNSypa27a381nfSDFgPREgp9UKIElibtooBIcA4KeU3thrJcOA64AeMuXsU1qqITm750P5R07mb/1nTuZczurhT1sZd07lXOLD5rw9ysJQWj7k8JkCZ/2wrctt19oqx93zN8e8w3mVt5Z5WA0FKORmYXMhT3xeyr0nBDSnlFGBKge3mBf7eiTVR3Nm+AbQpJP4qwPmD+BVFUe6VasJSFEVR7OKho7BUAlEURfF0HtbVcIdKIIqiKJ5ONWEpiqIodlEJRFEURbGLmkxRURRFsYfFaHJ3EQqlEoiiKIqnK2INRAgxAus0UT7AXGAb1t/SWYBfgf5SyvsOohKIHXJdPKfVHe74Ud/S/TNcHhOgXczbbok70BjglrgZGvd8FZ+65OI5nWxcM+H9/yr70yk3RAWHDMA12z8KSwjRHGiGdY7BAGAwMAMYJaXcKoSYj3Xuv6/u99weNZmioiiKUoiiTab4FHAEa4JYB3wLNMRaCwH4AesaTPdN1UAURVE8XdFGYZUEKmCd2bwS8A2glVLeqdZkAnbNqKoSiKIoiqcr2g8JbwAnbDOXSyFEDhBV4PlgwK7psVUTlqIoiqczmu798Xs/Ak8LITRCiEggENhi6xsBeAawa/0BVQNRFEXxdEUYhSWl/FYI8SiwB2uloT9wFlgghPABjgO/X9zmHqgEoiiK4umKMAoLQEo5tJDdRZ7fXiUQRVEUD2dRU5kodzRJ6E7eLT0Hpjpv2ZHYZ5rSpu/LWCwWtqzYSNLK3xbwCSkRytRvpzO581iunL78J2e5d4ePnmDGvMUs+SiRC5euMHLydDRoiK5cgVGD+qPVapm7eBnbd+5Bp9MxfGBv6tQUf33ie9T0mWa07dcOiwU2Ll/PppUbadnucVq+Yh2d6OPrTaWalenWqAv6DL3D4gJovHTUmNMf/6hSWExmTgz6BMOpKw6N8UdxYz7shX9UKXS+3sgPvyJ54wGnxevWpyNtO75I2o00AMYOnsrZ0+fZdug7zp+5CMDBfUeYMfljp5XBFcqUKcXypXPzt+vVq8V7I6eydNkXLP3XxxQPK4Zeb6DrG2+TmuqiBbmKWANxlr9lArF1/qwGjmH9JaU/sExKOaeQY7diW5XQlWX8I1U7tySsRhQpu5xXHI1WS8dhXRjRejA5+hxmbJ7D3g0/k5mWic5LR88pfcnLcdzSp4uXrWHd+iT8/XwBSJz9KQN6diU2pi7jE+eQtGMXkeFl2PfLEVYsmElyynXeGTmJVYtmOyS+Vqvl9eHdGPT8O+Toc/hoy1x2b9hN0hdbSPpiCwC9J/Zh8+pNDk8eACWeaIBGp2P/86MJe7QOlUd04Nc3pzs8zt2i2sWRl5bF/gHz8A4LosWmKU5NIDXrVmf4W2M5evi3/3fLVyrHscOSvl3cs3KlM6SkXOfxVq8A0OShhkycMIyFi5bxVv/uHDhwmEmTZ/J6l1d5b8RA4geNdU2hPHQurL/zKKwkKWVzKWULrG15g4QQxdxdqD9TsmE0pWKiObk0yalxLGYz8Y+/RXamgeCwYNBAjiEHgM4ju7F52XrSUtIcFi8qMoKZU0blbx+Tp2jcoA4AjzRtxO59Bzlw+CjNYmPQaDREhJfGZDJxM82ukYO/Yzab6d+yD4b896shx5Cd/3x03WiiqlVg4/INDol3N8Ppq2i8tKDR4BUcgMXomsV/Ln+zm+MJa/K3LSbnXmRq1a1Or4HdWLZuAb3e7mbbV4PSEaX4fO08Plk+k0pVKji1DK42c+ZE+g8YgdlsZvachUyZar3pKV8+kmvXUl1XkKKNwnKav2UNpBDBgAmoJ4RIADRY107vdOcAIUQ5YB7Wdc5LABOklF8LISYDLbEm0xVSyplCiH5AV8AM/CilHFLUAvqXLkb9+Jf5z5szqfjCQ0U93V8ym8zEPt2E7hN78UvSfoy3TTzWriWZNzM4tP0gL/Zr57BYrVrEcflqSv62xWJBo7FO9xIY4E9mlh693kBoaHD+MYEBAWTpDRQPc0zON5vMNHm6Kb0n9WX/lr2Ybv/2RWrX/1VWzVzukDiFMelz8I8qRZOfPsS7eAiHOr/vtFj/E9dgrUV6BfoRu3Agx99f7dR433+9kWWL16DP1DNnyTSat4rjekoqn85awoZ1W4h5qB6JcyfwylNdnVoOV3n++VYcO3aSkydP5+8zm81s2rCa2rWr8/SzHVxXGNWE5XAtbc1TZuA2MACYDbSXUh63JYEaBY6vDky3zf3SDBgPfA28DjwKXAG62Y59AxggpdwthOgrhPCSUtp1W1l/aDtKNxaE1YhCfzmVx/81BP/SoXj5+5B++gqnV9s1/LpQrw3uiGhUE4CJHcewZ/1u9m74mX7T3+axts1p/srjWCwWaj9cj4o1K9F/xkASe0wh/bpjagJ3aAvMFaY3ZBMSFERgYACGArUCvcFAcFBgkeJ0GtyZGo1rATCmw0h2r9/Fzxt2M3DGu7Ro25ItazYTGBJIuehyHNl1pEix/kxU7+e4sfUQZyavwDeyBA2+HMOe5oMx5952Wsw7/COLE/tZPGeXbOLSVzsdfv6Bw/vQ8KH6aDQa+naJJyvT2gS4bfNP1Kgj+GzeUky2u94DPx+iTEQph5fBVSaMH8rDzRoD0Oqp1+jUsS1z5iz83XGtnnoVIarwzdf/h6jxsGsK56FNWH/nBJIkpWxfcIcQYrGU8jiAlHKubd+dp68Co4QQb2LtN/G27W8PTAXCsc4JA9YEMthWm9mFtUZjl4OJvx9eXeXVRwitEunQ5AGw6gPrXbZ/kD9jVkxgcpdxGPOM5BhyMJstjHt1ZP6xY1ZOYuHIeQ5PHgDVq1Vhz4HDxMbUZceufcTG1KV8uUhmzF1Etw5tSbmWitliIayYXbMn5Fv2wVLA+n4nrpzM2M6jf3u/ti9crYdqcejHg0V+T3/GeEuf32x1+1YWGi8d6JzfOuxbMoRmK0dw6L0lpP541CkxZr0/H4Cg4EDWbV/Fc3GvYNBn0ySuEV8u/4b+g3tyKy2dRR/9C1GrKlcuJTulHK4wZmzi/2zHNKjDzl378reHDX2LS5evsmzZl+j12ZhcOTJK1UBc4ooQoqqU8r9CiGHAyQLPTQQWSCl/EEK8AXQTQvgCrwAdsCaJo0KIlUBPrB3vOUKIDVhnstzG30R2VjY/fr2dcaunYDIauXDiPDu+cl3xh7zVk3EJs5g130ililE82SIOnU5HTL3adOodj9lsZlR8P4fFy87KZtvXW5m6JgGj0ci54+fYtnYrAGUrlyP5gnMvahc/+ZbqM/sR8+/xaHy8ODN1BWaD4wYp/JFqA9vgXSyQ6vEvQfxLAOzsmIA5x/E1n6xMPR9O+ZjP184nLy+P3Tv2sn3LTg7uO0Li3Ak0fyIOo9HEiLfHOzy2O5QsWZzMrP8dcPHZkpV8tmgm3bu1R6fT0aPHuy4rj6cO49VYPHSx9j9jG4XVp5AaSGOs0xSbsdY4ugIbgD5AA2ACkAxcBOpJKWsJIcYAbYE04BDwDvAmMBC4jrUvpaeUMudOnP8r29ktH9p3Xlkuj/mPm8499581nftw83/dEvfEtb0uj+nlU9blMQGMeZeLvP5D1pCX7vmaEzTtK5etN/G3rIFIKbcCWwvZvxd45K7dzW3/PQGsKOQ1E7AmloIW2h6Koijup/pAFEVRFLuoPhBFURTFHhaVQBRFURS7qASiKIqi2MVDR2GpBKIoiuLpjCqBKIqiKHbw1J9bqASiKIri6VQfyIOjhItnvLyjhTbI5THd9YO+Lw44Zqr3+9W94WC3xC3vph8SfppT0S1x3eFUzZruLoL9VAJRFEVR7KGG8SqKoij2UQlEURRFsYfFqBKIoiiKYg9VA1EURVHs4pk/A1EJRFEUxdOpTnRFURTFPqoGogD4lAwhbuMUfn51CvpTV1wSs2qbZtTt9SwWs5kTq7Zx7F9bnBar6TPNaNuvHRYLbFy+nk0rN9Ky3eO0fOUJAHx8valUszLdGnVBn6H/i7P9ucNHTzBj3mKWfJTIhUtXGDl5Oho0RFeuwKhB/dFqtcxdvIztO/eg0+kYPrA3dWqKvz7xPWr0TBNa930Zi8XCf1ZsYtvKzfnPValfldeGd2FK+zEOi1eQt58PbywdwdphC0g9fQWdjxdtp/UmrHxpcjOzWTdmCTfOOXYlxuAG0VQa3ZnDL4/Dr2I4YlZ/sFjQy4ucGr4QPPTX0vfNS0fJcYPxiiyDxsebWwuWY0q5TunZEzFeuAxAxup1GDa6bpVP1YnuAWzL3L4DVCq4wqCraLx01JnWA1NOnkvjNhnVkdVPDOO2PofXkhI59c0u8tINDo+j1Wp5fXg3Bj3/Djn6HD7aMpfdG3aT9MUWkr6wJq3eE/uwefWmIiePxcvWsG59Ev5+vgAkzv6UAT27EhtTl/GJc0jasYvI8DLs++UIKxbMJDnlOu+MnMSqRY75gaJGq+W1YZ0Z03ooOfocEjbPYv+Gn8lKy+S53m14+OXHyHXSsrZl61TixclvEhJRPH9f4/YtydPn8slLYylZOYLWE7qx5PX3HRazXP8XKNPuMUwG69emyviunEtYQfrOY0Qn9KTE04258cMeh8Vzp6DnnsCcnkHyqAS0ocFErpzPrU+XkvGvL8n41xduKZOHrieF1t0FcLFOwEqg/V8d6Aw1xnXi/OebyU1Oc2ncmycu4BMcgM7Xx7ryu5NuZsxmM/1b9sGQaSA4LBg0GnIM2fnPR9eNJqpaBTYu31DkWFGREcycMip/+5g8ReMGdQB4pGkjdu87yIHDR2kWG4NGoyEivDQmk4mbabeKHBusa1QPe/xtsgu811zbxTXlQjKzeic6JE5hdD7eLOs9g+unf6vBlq5alpPbDgKQeuYqpapEOjRmzrkUjnaflr8dVLcy6TuPAZCW9Athj9ZxaDx30m/cRtrHS/K3LSYTPjWq4v9ILOGLplNibDyaAH/XFsp8Hw8X+sfUQGzrqJ8G5gNLgSVCiFjgYyATuAbkSCm7CSEGAB2xXmpXSimLfNta7rVHybv9GVmWAAAgAElEQVSRSerWw0S//WJRT3dfbspLtP1+IkZDLmd/2EdehuNrH3eYTWaaPN2U3pP6sn/LXky3f5v2pV3/V1k1c7lD4rRqEcflqyn52xaLBY3GuhR0YIA/mVl69HoDoaHB+ccEBgSQpTdQPKyYQ8pgNplp9PRDdJ3Yi4NJ+zHa3uu+H3ZTslwph8QozIX9J3+37+qx84iWDTi2YR9RDaIJCS+ORqtxWOdr6nc/4xtV4D0VWHXblJWDLtg9a8k7gyXbeiOgCfCn1AdjuPXxZ2h8fMj66gfyjv+X0B4dKda7C2kffuq6MqkaiNv1ABZKKSWQK4R4CGsy6SalbIk1uSCEqAm8BsTZHm2EEEVuOC/XoTklH61Dk7WjCaldgfof9cW3VGhRT/uHGg9pxwurR9LtyHwqtophebN3Wdb0HfxKhlD5uViHxuo0uDOTVk1l0qqpaLVadq/fRffGXfHy8aZF25YABIYEUi66HEd2HXFo7Du02t+uaHpDNiFBQQQGBmAoUAPSGwwEBwUWKU67wR14b+UE3ls5AY1Wy771P/N2bA+8vL2Ia9u8SOf+M08MeoU3V47izZWj0BR4r3fsX72V3Kxs3lw5iuqPx3DlyFnnjtwpcG5dkB9GJ96UuIOuTCnCF3yA/tvN6H/4D4akH8k7/l8ADEk/4lM92rUFUjUQ9xFChAHPAqVttYtQ4C0gUkp51HbYDqxNW7WBCsCdnuYwIBqQRSnD7jYT8v9usnY0R4YuIvd6elFO+af2TrO21QaVLcHTC9/FmJOHxWwhJzUD39CiXUTvtuyDpQD4B/kzceVkxnYejTHPSI4hB7Pt1qnWQ7U49ONBh8YtqHq1Kuw5cJjYmLrs2LWP2Ji6lC8XyYy5i+jWoS0p11IxWyyEFSta0v7igxUA+AX5896K8SR0GY8xz0iuIQeLExf92Tx9zZ8+X7ZeFc7vlXw/cSll61SieIUyTisLQNavZwltVpP0nccIa9mA9J1H//pFfxPa4sUoM+99br7/ETl7fgGgzNyp3Ej4mLxfJX6xDcg7/vtaoDMVpQYihNABCwABmIA3sNYhl2BtZfkV6C+lvO8o/4gEAnQGFkkphwAIIQKAs4BBCFFTSnkMaGI7VgJHgWeklBYhxLuAc26bXSDr8g2OLUuizdoxmPKMZJy/hlyz3SmxsrOy2fb1VqauScBoNHLu+Dm2rd0KQNnK5Ui+4NhRQQUNeasn4xJmMWu+kUoVo3iyRRw6nY6YerXp1Dses9nMqPh+DouXk5XNzq+3M2r1JIxGExdPnOenr5zzud6LG2eTeSL+FeJ6PU9Ohp61Q53bvHJm3P9RdXoftN5eGP57ievrdjs1nisV69ERXUgQxXp1gl6dALg5/ROKD+kLt42YUm+SOnGmS8tkNhbp5a0BpJQP25ryZ2BNIKOklFuFEPOBF4Gv7vfEGk9dqMSRhBCHgC5SysMF9s0FUoBngCwgD7gspewphBgCtAF8gT3AACllfmP+d2U6uOVDu+ijc3nMHzSO6XS+X/+86dz93BL3qZzbbon7aPKf16ic4Vz9Vi6PCVDx4Kbftznep5Tmze/5mlNm69bfxRNCeEkpjUKIrsDDwHNAOdtN8ovAk1LK/vdbrn9EDURKWa+Qff2EEP2B1lLK60KISViTCFLKacC0u1+jKIriDkXtRLclj8+Bl4B2wPNSyjtJKRNrs/59+yd1ohcmBdgohNgB1Mc6IktRFMWjWMyae378ESllV6Aa1v6QguOQgwG7mhr+ETWQPyKl/AJwzy+DFEVR7lERO9G7YG2umgoYsI7V2ieEaC6l3Iq1Gf8/9pz7H51AFEVR/g7MpiJ1o6wFPhNCbAe8sc7GcRxYIITwsf1t1420SiCKoige7s+apv6KlFIPvFrIU4/ZfVIblUAURVE8nKcOllUJRFEUxcMVpQbiTCqBKIqieDiVQB4gyd6u/0EfQIAbJlQbaHTPJHnu+kHf4v0fuCWuYVBPt8Q9u9Wx09p4sq3XnTu9yx/p5oBzqCYsRVEUxS5mk2f+ZE8lEEVRFA/nqdO5qwSiKIri4cwW1QeiKIqi2MGiEoiiKIpiDzUKS1EURbGLGoWlKIqi2MXkoaOwPLNUD6iS9Srz3JejeW7taFp+8jY6X2+Xxm+S0J2YEa85PY7GS0fNeW/T8NuJxPx7PAHRkU6P2eiZJoz/JpFx/07gsfZP/M9zVepX5b2VE/7glffv8NETdHtrKAAXLl2hS99BvN53MBOmzcFsW9Z27uJltO8xkE694zlyrEirIRdKE1yM4Bkr0EZE5e/z69gXnxbPOzzWHQH1qxG9cjIAXiVCqbRgJNGrpxL9ZQI+5cOdFtdTNE3oTkMXfH8KY7Fo7vnhSg9EDUQIMRx4Aus0xRbgPaAL1qUbuwPJUsr5d70mFpiEdWlHLfC9lHK6M8sZl/gmW3rPJvNcCtU6NCeobEnSz1x1Zsh8VTu3JKxGFCm7Tjg9VoknGqDR6dj//GjCHq1D5REd+PVN5320Gq2W14Z1ZkzroeToc0jYPIv9G34mKy2T53q34eGXHyPXkOuQWIuXrWHd+iT8/XwBSJz9KQN6diU2pi7jE+eQtGMXkeFl2PfLEVYsmElyynXeGTmJVYscuMKiTof/G+9iuZ0HgCY4FP9ew9GGlyPv6irHxSmgdO+XCXu5OWbb5xg5ohtpX2/l1nc/EdS0Dn7R5chz4pLF7lbNhd+fwnhqE9bfvgYihKgJvAC0klI+CQwDFksp35FSXviTl34EvC2lbAU8DbQXQjRwVjlDK0eQm5ZF7R5P8ewXI/EtFuiy5FGyYTSlYqI5uTTJJfEMp6+i8dKCRoNXcAAWY9EWdP4rFrOZYY+/TXamgeCwYNBoyDXkAJByIZlZvRMdFisqMoKZU0blbx+Tp2jcoA4AjzRtxO59Bzlw+CjNYmPQaDREhJfGZDJxM81xSwP7te9DXtI6LGmp1h2+/uR+9Tm3f9rksBh3y71wlbO9p+ZvBzaqgXdESaosm0BYm8fI2nXEabHdrZSLvz+FMVs09/xwpb99AgGuAeWB7kKIslLKg0CsEGKrEKK67ZiXhBBJQojdtpoHwHngLSFEQ6w1l4ellL8IIboJIb4SQmwRQhwSQrR1RCF9iwdRulFVjn++mR/av0/kw7WIeLiWI079p/xLF6N+/Mv8/N4Sp8e6w6TPwT+qFE1++pDq03tzccEPTo9pNplp9PRDTF4/A7nnGMbb1iXs9/2wG5MDE1irFnF4ef1WcbdYLGg01i9tYIA/mVl69HoDQUG/TQETGBBAlt7gkPjecU9hybyF8dd9v5UhNRnTGefeGaf/sAuMpvxtn3KlMaVncbrTGPIuX6d0X4d8TTzOne/Pbhd+fwqjmrCcREqZKoR4AXgLGCuEMAAj7zrsrJSyjxCiFvAvIAZ4ExgIzAOqAMuFEHcmYAoCWgGlgD1CiH9LKe26CjUc0o4ysYLQKhFknEvh1n+vAHBp62FK1q3I1Z+O2nPav1R/aDtKNxaE1YhCfzmVx/81BP/SoXj5+5B++gqnV+9wSlyAqN7PcWPrIc5MXoFvZAkafDmGPc0HY8697dA47QZ3oFqjGgBM7TiOfet/Zv+GPfSaPoC4ts3Zscb5d4xa7W9fWL0hm5CgIAIDAzAYsgvsNxAc5Jg5p3wefRosFrxqxqArH41/r+EYZo7Ckp7mkPPfK2NaJumb9gCQsWUvEUM6uzS+szUY2o4ytu9P1uVUWtm+Pzrb9+eUE78/hTGpYbzOIYSIBjKklN1t242A74GCDbLbAaSUR4UQ4UIIPyBGSjkRmCiEKAEsBnphXWB+m5TSDKQIIdKwJhK72pv2T7Mu9KX11tFu2zSCK5Yh81wK4Q8JTq7YZs8p78nBxN8vMFbl1UcIrRLp1OQBYLylz2+2un0rC42XDnSOr+x+8cEKAPyC/HlvxXgSuozHmGck15CDxeyauR+qV6vCngOHiY2py45d+4iNqUv5cpHMmLuIbh3aknItFbPFQlixUIfE0095N//vwOHTyf58psuTB4B+3zFCWjQk7autBMbWIufkn7UW//38Usj3J9r2/XF18gD1Q0Jnqgv0FUK0llLmACeBdMBU4JhYrDWMOsAFrE1WS4UQT0spf5VS3hBCnAfu9LQ2BBBClAFCsDaTFYn5tokdgxfS4qN+gIZr+//LxaSDRT2tR7r4ybdUn9mPmH+PR+PjxZmpK/I7X50hJyubnV9vZ9TqSRiNJi6eOM9PX213WryChrzVk3EJs5g130ililE82SIOnU5HTL3adOodj9lsZlR8P5eUxZUuT1pM+YQBlOzyDKZMA+cHuGcW438KT53KRGPx1O79+yCEGIl1ycYsrP06CVjX/e0DtAcaAMGAL9BPSnlICNEMmIY1iVqAvcC7QGegN9bF50OBUVLK9QXjLSrX2S0fmrcbopYz5rk+KPCZn3M73v+Ims7dNeqf/8blMZeUdU8zW7fLS4t89d8d+fI9f/ubXFnrsmzzINRAkFJOBibftftr23/H/cFrdgIP371fCAHWJqzhDiyioiiK3Ty1BvJAJBBFUZQHmeoD+ZuQUi5xdxkURVEKMqESiKIoimIHs4d2VasEoiiK4uHMqgaiKIqi2MOiEoiiKIpiDw9dEl0lEEVRFE+naiAPkBCTe3q0SpgdO5fUvcrQuP5/k/JuiAnu+0FfwPQF7on7yIP3K/k/Uspo+uuDPJR7flb711QCUf6UO5KHoij/S9VAFEVRFLt46GS8KoEoiqJ4uqIM4xVCaIG5QD2sE8b2kFKeckS5HoQFpRRFUR5olvt4FKIN4CelbAoMBxy2vrRKIIqiKB7OqNHc86MQccB6ACnlbqCRo8qlEoiiKIqHK2INJATrGkl3mIQQDum+UH0giqIoHq6IPyTMwLoe0h1ae5fovpuqgSiKong4s+beH4X4CXgWQAjRBDjiqHKpGogLRbRqQM34l7AYzZxduY2zy/7j9JgaLx015vTHP6oUFpOZE4M+wXDqitNjxnzYC/+oUuh8vZEffkXyxgNOjQng7efDG0tHsHbYAlJPX0Hn40Xbab0JK1+a3Mxs1o1Zwo1zyQ6NqQkuRtD4eeinDcV89SIAfh37Yr56kbz/fOvQWIePnmDGvMUs+SiRC5euMHLydDRoiK5cgVGD+qPVapm7eBnbd+5Bp9MxfGBv6tQUjgnupSN8cjxekWXQ+nhzY/4KjFevUWpkPzCbseTdJnn4NEw3bjkmnofxKRlC3MYp/PzqFPRO/v4UpoiTKX4FtBJC7AQ0wBsOKRQPSAIRQjQHVgPHsDYD+gPLpJRz7DzfVqCPlPKEo8qo8dJRf3xnNj8zGqMhl5bfjOXKxgPkXk//6xcXQYknGqDR6dj//GjCHq1D5REd+PVNhw3CKFRUuzjy0rLYP2Ae3mFBtNg0xekJpGydSrw4+U1CIorn72vcviV5+lw+eWksJStH0HpCN5a8/r7jgup0+L/xLpbb1mV/NcGh+Pcajja8HHlXVzkuDrB42RrWrU/C388XgMTZnzKgZ1diY+oyPnEOSTt2ERlehn2/HGHFgpkkp1znnZGTWLVotkPih7RuielWBsnDpqEtFkyFLz/m9uVkrk+eS+6JM4S++izFe7zK9YRPHRLPk2i8dNSZ1gNTjnuWd4Y/7Nu4J1JKM9blvR3uQWrCSpJSNpdStgAeAwYJIYq5u1B3hFSNJOtcCrfTDVhum0jdc5JSDzno7vBPGE5fReOlBY0Gr+AALEbnT4pw+ZvdHE9Yk79tMTl/KjidjzfLes/g+unf7g5LVy3LyW0HAUg9c5VSVSIdGtOvfR/yktZhSUu17vD1J/erz7n90yaHxgGIioxg5pRR+dvH5CkaN6gDwCNNG7F730EOHD5Ks9gYNBoNEeGlMZlM3ExzTI0gc8MOUmf9X/62xWTi6qD3yT1xxrrDS4c5130XWGeqMa4T5z/fTG5ymtvKYNTc+8OVHogaSCGCARNQTwgx1rYvAHgdyAPWATeA74FtwCysVbvLQCfb8WOFEGWAQKCDlPJMUQrkFezP7Yzs/G1jVjbeIQFFOeU9Melz8I8qRZOfPsS7eAiHOjvwDvyPYhpyAfAK9CN24UCOv7/a6TEv7D/5u31Xj51HtGzAsQ37iGoQTUh4cTRaDRYHrM7jHfcUlsxbGH/dh+/zHQCwpCZjSk3Gq25skc9/t1Yt4rh8NSV/22KxoLEN2QwM8CczS49ebyA09Le+0sCAALL0BoqHFf0+ymLIAUAT4E/kzFHcmPU5pus3AfCrX4NiHVtzqcuQIsfxNOVee5S8G5mkbj1M9Nsvuq0cHrqe1AOVQFramp7MwG1gAFAL6CylvCKEeA94BVgGhAMNpZR5QohDQHsp5XEhRD+ghu1830kplwohxgHtgER7ClVr2CuUjK1GsRrlufHL6fz9XkH+5KUb7Hqj9yOq93Pc2HqIM5NX4BtZggZfjmFP88GYc507MaN/ZHFiP4vn7JJNXPpqp1NiPDHoFSo0ttbiFnec/LvEsH/1VkpFR/LmylFc2HeSK0fOOiR5APg8+jRYLHjVjEFXPhr/XsMxzByFJd01d6la7W+3mnpDNiFBQQQGBmAwZBfYbyA4KNBhMb3CSxI5Zwy3VnxL5ndbAQh65lFK9O7AlT5jMKU5tznWHcp1aA4WKPlIbUJqV6D+R33Z1+UDpzc9301NZeJ8SVLK9gV3CCFeBGYLIbKAslhHIwCclVLeqW+XkVIeB5BSzrW9DmC/7flkrAnHLkdtTTkaLx1PbUvEu1ggRn0OpZpUR877zt7T3jPjLX1+s9XtW1lovHSgc27LpW/JEJqtHMGh95aQ+uNRp8XZPH3Nnz5ftl4Vzu+VfD9xKWXrVKJ4hTIOi62f8m7+34HDp5P9+UyXJQ+A6tWqsOfAYWJj6rJj1z5iY+pSvlwkM+YuoluHtqRcS8VssRBWLNQh8XQlilF24RSuTZpL9m5rs2Bw65aEvvosF7sOwZye5ZA4nmZ3mwn5fzdZO5ojQxe5PHmAWg/EXRYClaWUmUKIzyF/KEPBf48rQoiqUsr/CiGGAXfaQhxaa7QYTRwat5RHVwxDo9VydsU2clzQpnrxk2+pPrMfMf8ej8bHizNTV2C2NTE5S7WBbfAuFkj1+Jcg/iUAdnZMwJzj2unob5xN5on4V4jr9Tw5GXrWDn1wOniHvNWTcQmzmDXfSKWKUTzZIg6dTkdMvdp06h2P2WxmVLzjpmov3qs9upAgSvTtCH07glaLb9UK3L5yjcjZYwDI3nuYGx8tdVhM5TeemkA0Fountq7dO9sorD6F1EBmAE8DaUAK1n6PycBKKWUT2zGNgRlY/42uAl2BDbbznRBC9AHCpZTj7px3TUQnt3xo7lgPxF3Tue/1c0tYhj6W8tcHOYG71gM566b1QKodX+/ymN+V6eDymADPpawocgPU/KjO93zN6XNxqcsavB6IGoiUciuwtZD98UB8IS9pUuCYvcAjdz3fvMDz8x1RRkVRFHupBaUURVEUu3hqO5FKIIqiKB5OjcJSFEVR7OKpnegqgSiKong4lUAURVEUu5hUE5aiKIpiD1UDURRFUeyiRmE9QHRu+vFllbI3XR7zqUvumd/o05yKbol7dqvj5o66HwFu+kFfpR1z3RLXHR7rpHd3Eexm9tAUohKIoiiKh1NNWIqiKIpdPLP+oRKIoiiKx3P1QlH3SiUQRVEUD6f6QBRFURS7eGb6UAlEURTF46lOdEVRFMUuqglLASCsQRVqj+7AjpcnOS+Il44SYwfjFRmOxtub9IXLyD1ynBKj49GGBIFWy40xCRgvXXV46G59OtK244uk3bCutjh28FTOnj7PtkPfcf7MRQAO7jvCjMkfOzRucINoKo3uzOGXx+FXMRwxqz9YLOjlRU4NXwhO+u1OQP1qRA7vyqn2I/EqEUrU+2+hCw0CnZYL735I3oVkxwb00hE+OR6vyDJofby5MX8FxqvXKDWyH5jNWPJukzx8GqYbtxwW8vDRE8yYt5glHyVy4dIVRk6ejgYN0ZUrMGpQf7RaLXMXL2P7zj3odDqGD+xNnZrCYfHdRRMUiv+7M8j+ZAwaLx98X+kHJhPm61fIXT3Haf9PFcbkskj354FNIEKIisBh4ECB3UlSygmFv8L5qvZ/nvLt4jA5eUnZwGefwJyeQcroBLShIUQsn0/O3l/Q/7AFw6Zt+Daqh3fF8k5JIDXrVmf4W2M5evhE/r7ylcpx7LCkb5fC1vYqunL9X6BMu8cwGXIAqDK+K+cSVpC+8xjRCT0p8XRjbvywx+FxS/d+mbCXm+cvERw5ohtpX2/l1nc/EdS0Dn7R5RyeQEJat8R0K4PkYdPQFgumwpcfc/tyMtcnzyX3xBlCX32W4j1e5XqCY5bvXbxsDevWJ+Hv5wtA4uxPGdCzK7ExdRmfOIekHbuIDC/Dvl+OsGLBTJJTrvPOyEmsWjTbIfHdRquzJozbeQD4PNWevI0rMR3fj2+neHQ1GmE6ttdlxfHUGojW3QVwsmNSyuYFHm5LHgD6cyns7j7T6XEMm7Zxa+6S/G2LyYRv/VroSpek9LxEAp95nJx9h5wSu1bd6vQa2I1l6xbQ6+1utn01KB1Ris/XzuOT5TOpVKWCQ2PmnEvhaPdp+dtBdSuTvvMYAGlJvxD2aB2Hxrsj98JVzvaemr8d2KgG3hElqbJsAmFtHiNr1xGHx8zcsIPUWf+Xv20xmbg66H1yT5yx7vDSYc7Nc1i8qMgIZk4Zlb99TJ6icQPr5/lI00bs3neQA4eP0iw2Bo1GQ0R4aUwmEzfTHFcDcgefF97g9s71WDKssz+YLp9BExAMgMbXH8yurRNY7uPhSg96AvkfQgidEGKhEGKDEGKfEGKibf8SIcQ6IcROIUSYEGKqEOInIcQuIcQrjop/5bu9WIzOX5zSkp2DxZCNJsCfUoljuDX3M7wiwjFnZnGt71BMydcI6faaU2J///VGxg6ZSreX+xLzUD2at4rjekoqn85aQteX+/LJrM9InOvYPJ763c9YjAW+0AXGzJuyctAFBzg03h3pP+yCAnF9ypXGlJ7F6U5jyLt8ndJ92zo8psXw279t5MxR3Jj1Oabr1oucX/0aFOvYmluff+WweK1axOHl9VtDhcViQaOxfsCBAf5kZunR6w0EBf32GQcGBJClNzisDK7m1bgllqwMTPKX/H2W61fxfaknAcPmogkuhumU428O/oz5Ph6u9MA2YdnUFEJsLbA9EtgtpewhhPADLgGjbc8lSSk/FEI8A1SSUj5sO2a3EGKTlPJvdUulK1OKUtPHkblmHYb1SZjj+5C9bRcAhu27Cev/hsNiDRzeh4YP1Uej0dC3SzxZmdY5h7Zt/okadQSfzVuKyXahPfDzIcpElHJY7EKZf7sP0wX5YcxwzcXMmJZJ+iZrU1nGlr1EDOnslDhe4SWJnDOGWyu+JfO7rQAEPfMoJXp34EqfMZjSnDd/mVb7W3bWG7IJCQoiMDAAgyG7wH4DwUHumVPMEbxjWwEWvKrVQ1u2En4d30UbWYns6e9gTrmI98PP4vNCd/LWfuKyMllUE5Zb/E8TFnAEaCyEWAZ8CPgWOFba/lsHaGhLPOsBb8CxbS5Opi1ejDJz3+fW7IXo/70egJyDv+IfFwuAX0wd8s6cd1i8We/P5/WX+tC3Szzrtq8iINAfgCZxjTh66Dj9B/fk9d4dABC1qnLlkoM7lu+S9etZQpvVBCCsZQMyfj7u1Hh36PcdI6RFQwACY2uRc/KCw2PoShSj7MIpXJ++mIy1GwEIbt2SYh1f4GLXIdx28mdbvVoV9hw4DMCOXfuIqVeLBnVq8tPP+zGbzVxNvobZYiGsWKhTy+FM2R+PIPvj98ieOxLz5bPkLP8Qy40ULLnWJGnOuIkmIMilZVI1EM/QDbglpewthIgGegkh7txS3fnsTwD/kVL2EkJosdZQzri+qPYL7d4RbXAwoT06E9rDehecOjaBEqMHEdSuNZYsPanvTXF43KxMPR9O+ZjP184nLy+P3Tv2sn3LTg7uO0Li3Ak0fyIOo9HEiLfHOzx2QWfG/R9Vp/dB6+2F4b+XuL5ut1Pj3XF50mLKJwygZJdnMGUaOD/gA4fHKN6rPbqQIEr07Qh9O4JWi2/VCty+co3I2WMAyN57mBsfLXV4bIAhb/VkXMIsZs03UqliFE+2iEOn0xFTrzadesdjNpsZFe+emYWdKWf1HPy6DAGzCYvRSO7qj1wa3+ShNRCNxU1TkzubbRTWSillkwL7agErgUxAD0QBjwOTbceutyWU6UBjIAj46u7O97XhHd3yoTWMvObymG6bzl1b0S1xQ3ydO0LujwQEOK7j+364azp375KVXR4zK/4Fl8cECJrxTZFnsupd8ZV7vuZ8cm6Ny2bOemBrIFLKc0CTu/YdxdpEdbduBY6xAM4Zb6ooimIHRzdNCSECgeX/3959h0lZXn0c/+4uvYsiiIIF5CexoKgoCioabK9CigWxYsNuNLGXgF1MBEURC4odjSmW2KNRI9iNaDRH0dhAKdKXvrvvH/czsKzssi5zPzMD5+PFtTOzM3NmF5kzdzsHaE34MH20mU2XtCtwE7AMeN7MapwuWNvXQJxzruBV/IT/aukk4F0z602Ylcns1R4NDAR6AbtI6l7Tk3gCcc65PJftRXQzG0GYugfoCEyV1AJoaGafJzMxzxGm+Ku11k5hOefc2mJNtvFKOgE4p8rNg8zsbUkvEab1+wItgLmV7jMPqHGxyhOIc87luWVrsNnJzMYAY6r53t6StgL+DuwANK/07eZAjefffArLOefyXLZLmUi6SNLRydVSoMzM5gJLJHVKdqPuB7xW0/P4CMQ55/JchGKKdwP3JtNbJUCmNMUpwIPJbc+b2Zs1PYknEOecy3PZLmViZlOB/Vdx+xtUOf5QE08gzjmX5/K1I+FaexI9MvWzoXsAACAASURBVP+lOedqa41Phh+yab9av+c89tWan3yvLR+BOOdcnsvXEYgnEOecy3P5OlPkCcQ55/Jcvra09QTinHN5zqewnHPO1Um+diT0BOKcc3murCI/xyCeQJxzLs/lZ/pYTQKR9EdgR6Ad0ITQ2nUp8FrVLn2VHvO9mbVbXWBJrYH9zeyhn/yqVzzHhcBLZvZWLe/fDrjczNa+npvOubVWQU5hmdlvASQdB2xlZhdmMfZ2QD9CV6w6MbPrfuL9vwc8eTjnCspaswtL0l7AKWY2ICnEdSqh8NbjZjak0v2uAVoCZwCHENrElgH/ShLRJUA3SSeb2R3VxJoEjAe2BF5Knq8HYGZ2tKSxhG5aXwBjCaOjZcAxwBLgEULF4fqEImHzSPqkS5oIvEJIZBVAf0It/FuBnYDvgc2Bg5P2uM45lxP5eg6kzuXcJW0IXAj0JkxztZTULPneH4B6ZnY6sB4wFNjHzHoBG0vqS+iG9VJ1ySOxGaHV4h7AWcAoYBegl6RWle7XF3gX+HnyvOsREs0c4IDksS2qPHcL4GEz2xOYnNyvH7C+mfUATgA6/MRfi3POZV05FbX+k6Y1WUTfAvjIzBYm188BkNSW8Kl+UnJ7Z6AN8LQkCE1KtgCsFjF+MLOvk+ctNbOPk8tzgEaV7jcGuAB4lpA0LgaeIYxcHieMTK5axfO/n3z9Jnm+zYAJAEmD+f/W4jU651xU+boLa00aSn0ObCWpIYCkxyRtDEwlNCLZWtL+wP8Ib9B9zWwvYCTwJmFjweri1zad9ics7O8D/ImQTPYCvjOzfQnJ45paPP9HQM/k51kP6FLL+M45F022G0plS50TiJlNB64HXpE0AXjPzCYn36sAjgduISSKG5P7vUmYKvqUkIC2lfSbNfsRAHgHuFrSa4S1jpHAB8BJyWu7Abi2Fs/zd2CGpPGEUc0CwujFOedyJl+nsLyceyVJb+DtzWycpPWB/wCbmtniKnf1X5pzrrbWuLx6z4371Po9Z8Lkl9edcu6S+hF2aFV1k5n9NeWX8w1wfTIqKgEuWEXycM65VOXrB30fgdSN/9Kcc7W1xiOCndvvUev3nLenvLrujECcc87VLF8/6HsCcc65PLfWnER3zjmXLh+BOOecqxMfgTjnnKuTgqzG61btb+0G5iRuz66TU4+58euTVn+nCCb97Gc5ifvP6W1zErfNsrKcxN3zyNKcxG124xOpx1w644vUYwLU32CLNX6OfC1l4gnEOefyXLmvgTjnnKsLn8JyzjlXJz4Ccc45Vyc+AnHOOVcn2R6BSCohVEnfCWgIDDGzpyTtCtxE6Oz6vJkNrel51qQfiHPOuRSUV5TV+k8tHQ3UN7PdCf2UOie3jwYGAr2AXSR1r+lJfATinHN5LsJBwv2ADyX9nVDs8UxJLYCGZvY5gKTngH2A96p7Ek8gKSmqV0L34SfTuEMbShrWx4b/le+fr/bvZc0UF9Pid+dR0qEDlJUzd9h1FDVuQvOzzobyMiqWLmXutddQPmtWVsO2bduGhx4Ytfx6t25bc/El1/LAg4/xwP230nq9VpSWLuDYQWcxY8bM7AStV8IGQ35HvfZtKWpQn9l3PkTZ1OlsePOVLPs6nJuZ++iTLHj+lezEW42e1x/PktmlvHvtI6nEa7BBC3o9fw1vHnYNpZOmRI1V1Kwljc+5kYW3X05RvQY0PPQ0KCujfPoUFj86EvJ0ofenmPif/3LjbXcz9pZhfP3tFC65+o8UUUTnLTbl0t+eTnFxMaPufpBXx79FSUkJF549mG1/puiva01KmUg6gaTleCXTgUXAQcAewD2EkcfcSveZR2g/Xq1aJRBJWwPDgCZAM+BpwpzZj34qSWOBcWb2bKXb2gGXm9lptYlXW5K2B/qZ2RU/4TEjgBszvdbT0uGQXiyZNZ93z7yN+us1o88L10RLIA177gbArDPPoH637Wl22ukUN2vGvJtvYtnnk2h88ME0OWIg80fdmtW4U6dOZ5++hwKw6y47cuUVF3DXmAc54/Tjee+9iVx19QiOOfowLr7obM797e+zErPZ//2c8jlz+f7S6ylu2Zz240Yz+44HmHv/n5l7/2NZiVFbXY7am/W6dmDqhP+mEq+oXgnb3nAiZYuWxA9WXBISxtIQq8F+A1jy/DjKPnmXhkeeS0nXnSj7+O34ryOiux/8E08++xKNGzUEYNjNd3DmScfSo/t2DB02kpdem0D7dm155/0PefjOEXw/dTq/ueQqHhlzc/TXtiYjEDMbQ+iwupykccBTyXv4K5K6EJJH80p3aw7Mrum5V5tAJLUCxgG/MrPPksWXPwGDCfNltfkBvgeymjyS5/038O+f+JhstND9ySY/8QZTnnxz+fWKsngnSxe//i8WT5gAQEm7tpTPmsW8G/9I+czkU39JCSyJ+6YzYsSVHHPsmZSXl3PzyLsoLg7LbR07tmfatBlZi1P6/CuUvvDq8usVZWU06Lol9TfbhCZ79WTp15OZecNtVCxYmLWYq9Jmx8606d6ZTx94iZad2keNldF1yJF8de+LdD6rf/RYDfoNYun4Z2mwzyEAlE3+gqIm4b2mqGFjKM/NSfps6tB+I0ZccykXXXEDAB/bJHbeYVsAevfcifFvvcdmHTdhtx7dKSoqYqN2G1JWVsbMWbNpvV6rqK8tQjHFfwEHAn+W1A342szmSloiqRPwBWGaq8ZF9NqMQPoDL5nZZwBmVibpGGCppLuADsD6wDNmdlnymNMknZc8/wmEFf1xZrarpInAK8B2hMZM/c1szqoCJ6OZpcCmhJ0C44CDgY7J6+oAnGJmA5L7dgIaAX8ws0ckXQ3sTdgs8LCZjZD0T0Lf9AHA5sCGyfOfY2bPSToIuAKYA8wCJprZkFr8nmpUtiA0NqzXtBE97jqbT657dE2fsmblZbS48CIa9urNnCGXL08e9bfemia/+BUzzz4zWuiDDurLxx9/yqeffr7i5ZSX88Jzj7LNNlux/4FHZC1WxcJFABQ1aUybP1zO7FvvoahBA+b/9RmWfPIZLU8cSKvBRzNr+B1Zi1lV4w1bsf25v+KlE0aweb9dosWpbJPD92DJD/OY8c+J0RNIvZ33pmL+XMrsfUgSSMX072j468E0+PlhVCwqpWzSh1FfQxr69unF5O+mLr9eUVFBUVHozdS0SWPmzS+ltHQBLVuu+JDetEkT5pcuiJ5AIpQyuRO4TdIbhDWQU5LbTwEeJHRkfd7M3qzm8UDtEkh7QjZazszmS9oMeMPMTpTUCPgWyCSQ8WZ2naQDCVNflVvWtiC8mZ8p6UHgAEJiqM6XZnaSpNHA5mZ2oKShhETybwBJzYE+hC1pFcC+yWOPIczvTQGOW8VzLzazAyT1BX4r6UXgZqCnmU1NXl/WNG7fmh73nMv/xr7At38dn82nXqW5111L8Xq303rUbcwYdCwNe/ak6ZFHM/uiC6iYs8qcXSdXDD2f3XfbGYC++x3OkQN/zciRd/3ofn33OwypE0/87T7UdfesxS9p24YNbxzCvEefoPSZlylu3pTyeaHG04KX/kXrC87IWqzKdjj/ENruLNbr2oH5k2fQ9/7zaLxhS0oaN2DO51OY9OhrUeICbHLEXlABG/TehhbbbMr2t5zKO0f/gcXTs/f3mlG/R1+ggnpdulG88eY0GngOxe03Z+Eff0P51G+ov/uBNOh3PEv+cnvWY+dScfGKxn6lCxbSolkzmjZtwoJKo9nSBQto3qxp9NeS7RFI0qr7+FXc/gawa22fpzYJ5Ctgpa1ckjYnfPrfWVIfwtxZw0p3ycwpjAduWMVzvp98/YYwYqhJZqFgNpCZXJ5V+XFmNk/SGcAdhAT1QPKtAcC1QDvgmVq8jjbAXDPLfAx5LXnsGmu4QQt2G3cRH1w8lhn/+k82nrJajfruS3GbNix46EEqFi+Cigoa9epN44P7Meucs6mYNy+r8S7//bCVrnffYVvGT3hn+fULzj+Dbyd/x4MP/pnS0oWUlWfv01Rx61a0ve06Zl53C4veCn+dbUddyw/X38qSj4xGPXZgySefZi1eZe8P+/EaS+fDetOyU/uoyQPgjV+sWPbb9S+X8eH5Y6IkD4CFt160/HLj065m0WOjaDzoEioWhzfS8rkzqbd51yixc2mrLp14672J9Oi+Ha9NeIce3bej4ybtuXHUGI474tdMnTaD8ooK1mvVMvprKeRy7k8BF0u6zcw+l1SfcADlZWC2mQ2W1Bk4WVImZfcgJI/ewEereM6f8ttY7X0lbQTsaGa/TEZD30h6CDgUOIIwRPtPsnBU03NPA5pLamNm0wmZ+Muf8Fqr1eXsX1C/VVO2OveXcO4vARg/8HrKFy3NxtOvZNFrr9LyggtZb8TNUK8e824dSYvzL6Rs2lRaXXElAEs++IDSsfdkPfYGG7Rm3vyVK7zeM3Yc94wZwfHHDaCkpIQTT6y6IaTuWp04kJIWzWh18pFw8pEAzPzj7bQ+71RYuoyyGTOZceWIrMVzwaJHR9Lo6PPCrr5ly1j86C25fklZd94ZJzHk+pu4afQyNt+sA/v26UVJSQndu23DkYPPpby8nEvPzfrS7ioVbEOpZGHlWOBOScWElfkngX8A4yT1BkqBzwjTXQC7SnqJ8AZ9PFloKr8a3wPtJL0PzCesgSyWNJMwzTULeB6oceeVmZUnI5mnJc0hrJ18lo0X+OFl9/HhZfdl46lWb9Ei5gwdstJN0/sfnEroGTNmstPO+65027RpM/i/g4+KEm/msFHMHDbqR7d/f2xO9kpEH3msyhu/ujK1WAtHXQJABZNZOPKC1OKmZeON2vLQneEDx2YdN2HsrT+eQDn9hKM4/YQ4/z9XJ19rYRXla2bLFUkXEbb5Lpb0AGEhaaV3/r+1G5iTX5r3A4nP+4GkYx3rB7LGH6DXa9a51u85s+ZPiv2BfbmcHySU1IAwOqjKzGxw2q+HcHjmDUkLCNNX6ZwIc865anhDqWqY2RJgr1y/jgwzuwVY+yZ0nXMFK1+nsHKeQJxzztXMy7k755yrEx+BOOecq5N83ezkCcQ55/JcuS+iO+ecqwsfgTjnnKuT/EwffpDQOedcHXlPdOecc3XiCcQ551ydeAJxzjlXJ76I7tYakrYEOgMfApOTfs/OuUg8gayFJO1R3ffM7NXqvpfl11BMKOO/G/BmUvMsZrwzgF8CrYF7CYkkTivCH8cuJjQjm5ZW0ko6gh4CNMncZmZXVPuA7MZuQWgD/YWZRS/nK6ljlZuWAjPMLPvNdFaOe/kq4n4DPBI7dqHwBBKZpHuoZheemf2opWSWnJp87QQ0AN4GdiD0StkrUszlJF1PaIO8KaGb5VTg2MhhBxAamL1kZiMkvR05HgCSfkVosDaL0IzsVDN7IYXQDwPPEnrhpEbSIcAlhPeORyVVmNlVkcM+BWwCGNCF0H+onqTzzeyBGh+5ZroBCwmdSXcldGH9DtgPODpi3ILhayDxjSOUhG9NaMk7BpjI6lv51pmZHWFmRwDTgZ3M7CRgF2BRrJhV9DKz2wm95fcn/OOPLfP/ciZZL04hJsBlQA8z2wHYHbg6pbgLzGyomd2e+ZNS3HMIb6YzgKsIo77Y/gd0MbOehJHl28A2wJmR47Yys6OS3+8goNzMjgY2jxy3YHgCiczMnjOz54AmZjbMzF43sxGEKY/YNqp0uR6wYQoxAUok9QC+TPq9pPGzPgy8CnSW9DTwtxRiAvxgZtMAzGwqMDdmMEldJHUBpkoaqCBzWxrKzWwxUJFM16XRkaqtmc0AMLNZyfWZQOz6Hq0kbQAgaX2gZdLSu0nND1t3+BRWeppJ2pvw6Wk3wtRSbGMIveA/An4G/D6FmAD3ASMJ7YyHATfFDmhmIyW9SPhk+l8z+zB2zMRcSc8BrwA7AU0kXZO8posjxKs80jgp+QNh5LV3hHhVvSbpIWATSaMJ/z/H9q6kh4EJQE/g35IOJ0yNxvR74E1Jc4FmhBHPbwn/rhx+Ej01kroCVwBbA58Ap5tZ9PnrZMFzK8KC54zY8VYRv4OZfZNCnLur3JRZ8Lw1+dQaK261aztmdm/EuI2Armb2vqRfAH9PY2FXUkvCm/i2hET9ZOyYSdx+QFfgQzN7WpKAb8xsQeS4qW+QKCQ+AkmJmX0CHJpmTElbA6OBVsCDkj4ys6dSiHsWYfGxFTBI0rNmdm7ksI2Bz1mx4LkzMI2wI6tfjICSupnZvck03UmEdZe7zSyN0qkPAC8C7xMWlg8DBqYQ9+9m1ouwgJ8KSc0Ja4bfARtIOsbM7kshbl/Cmk+j5DpmlsYor2B4AolM0neE6YUiquzGMrP2kcPfDAwC7iQMu58h7GiJ7QhgT8KbzNbAP1KI2SbZOADwnKTnzewySVG2LUs6Fzhc0u7ADYQdZ18Bw4GzY8SsYmMzGw1gZsMkvZxCTICZks4m7IgqT+I/Hznm48AUwogS0qstOBz4TaW4rgpPIJGZ2UYAklqZ2ewcxJ+UbLWcLmleSmErCAv4U82sQlLrFGK2kLSVmf03mS5slix8NosU7wDCWlYF4ZN/FzObJWl8pHg/IqmLmX0qqRNQklLYH4Dtkz8Qfv7YCaTYzI6KHGNVvjazF3MQt2B4AknPU0CvlGPOlDQYaCppAJBWAnuZsCPqCEnDgT+nEPMMwjTdRoTps7HA4cTbVltuZmWSuhPWlzLrLEWR4lV1NuEcxoaET+eD0wiabGddLvl9xzZR0i7Av0lGH7EPpiamJRsF3q8U944U4hYMTyDpycXQ/wTgYsKe/Z2S69GZ2SWEw2ZIejuNxV0ze0vSqYREsi9hq+eVMWMmW2cHAU8k17cGymLGrGQPM9t+9XfLLklDgdMIuwibAJ8Spilj2hM4uNL1CmCLyDEhnD8BaFcprqvEE0h6cjH0HwrcaWYfR46zkmTHzOlAfaBI0gZmtm2kWA0Iay6nExaxWwCbm9nCGPEquRS4H/gSuEjSnoSF7bQ2ShwoabiZpZWwMg4gHAwdTjiBPyp2QDPrFjtGZZI2MbNvCWeLXA08gaTEzAYln1g7EYr9TUkh7OvAsGQXyz2EGj6x31gBLifsmT+FMJ3184ixviT8Qz/SzD6T9EwaP6OZvU043Q+ApAnAFinWSGoDTJH0P8KHkQoz2y2FuD+Y2WJJzZP1tWiH6iTdYmZnJL/bqhtQYv6s5yZ/bmfFBhhI76xNwfAEkpIqxf7GAlsSudifmT0GPJbMUw8HRhC21sb2g5lNkHSKmY2VNGj1D6mzmwiL2JtJuov01iAAkLQT4Y2mLfC1pMEpHWI8KIUYq/KtpOOBUknXEkZ8sWSmIAdEjPEjmS3nZtYnc1ta55kKjZcySc8Awifx2WZ2E5U+vcYiqaOkywjbdxcQph/SsDipCFxf0n6sXFIlq8zs+mSK42ZCItlZ0vWStokVs4qbgaPNbBPCQnb0KZ1EfcLPeyxwHGGtKxpJlyYXBxMOwp5HGEVHe3NPSsNA2EnXnrAWcTehHlZ0ks6SdJKk8whbw29MI24h8QSSnlwU+/sz4TBdbzM73swmpBATQjXg+oRieycTprSiMrNXkkJ3nYBvCesTaViYWWNKRh5p7A6CUC4Gws6+zYH1I8fbGyA5JHm1mc0zs5Epra+NJvx7uZSwOSOtkjxHEA6iHkDYKJD6poV851NY6ckU+9s0drG/SouAR5GcychstzSzTyPGrVzQLzPcv5gUd68kZ21GJn+ikXRycnGppFGEv9seRC6mWMkCM7tW0pZmdryk1yLHK6rmchqWAv8BGpjZG5LSet/KxXmmguIJJCUpF/vLLAKOrnJ77EXAyoX+qp6+X9sWHzPTcplRnYA5hLMKaSiS1I5wYLIpYW0tpopqLqehAngIeFrSYaRTARhyc56poHgxxZTkothfUmTviZRqM1WOm5NCf2nKjPJWVUY95igvid2CMJ3yM8I6xF3AfWb2u4gx5xBGAUVJ3Mzl6Lu/kpLqPQhreXsCE5Ny7qmRVH9t+384G3wEkp7Ui/0RFu2vlPQEMMbMvogUp6pcFfpLU9Wtnq0JhwjnEHG0lezm+y2wDDjTzJ4lnT4v26UQozr1Cdu1tyR0AhwJRE8gkg4llIhpSNgOf4OZ/SF23ELiCSQ9qRb7A0j20DcA+gO3SGpgZjHPZGTkqtBfmh6Q9D5hN91BwG2E5DE0ctyBhOmyFoSNAqlUxTWzr9KIU437gGsIh0UfI2xJ71PjI7Ljd8CBhK6iHQkHfz2BVOK7sNLTQtJWAMnX5pGL/WX0IPRwbks6VXGBFQvqKRf6S9PVwLFJTaarCDt1dgIuiBx3kZktSXq7pNGULB/UI6xFtDKzcaT3/1OmBfS8pAtj85TiFgwfgaQnU+yvPfA14dNUzGJ/SPoY+AC4y8xOjBWnSswWhDfR1Av9pazYzCYmf59Nzew9AElpLiqmvRsqVxoQyqa8KqkP6b1v/Q94BzhT0u+BN1OKWzA8gaTEzN4Cdqxy8zuRw95jZjdEjrFcNfPza6vM6H1/wnoPkhoSf0S5tUJL2aJKlwEws7VtnSnjOKAvoadNf8L29OjM7DhJzcxsflIUNHYL3YLjCSQlko4BLiTpbgZgZrErih4g6cYUC+7lZH4+R16U9DrQAeiXTNXdBjwSOe5hlS5X3aa9VpG0k5m9QzgoOYmwA2s24SR6tA0hki41s6sU+rBXSMrcvjYn6TrxBJKeCwi7rdKsp5N2wb1FyZrAjGTxfq1lZtcnu9ummdkPmQRiZn+NHPeVmM+fZ/YhjNKPqHJ77ErWmT7va3WCzgZPIOn5wswmpRwzVwX3YB2Yn7fQ5z5z+XPCNm2XJWZ2ffJ1ULK21mg1D8lW3A+Si18T+pBUjrsuJfDV8gSSngWSnmHlrmpRC+ARCu1VdUXEeOvi/LyLTNK9hJpfc1hR3aB7CqEfB/4CRDnouzbwBJKep3MQM7PoV0T4Bxd72/Y6Mz/vUrWVmXXKQdxvzGxIDuIWDE8g6XmQsJukA6HGzkexA5pZ5dpUJCOgmPF8eO9ieEuSzMxSjvukpOuA5RWHzey+Gu6/zvEEkp7RhDMRfQkLg/cRTrlGU6VOU3vCaVrnCs0c4G1J81lRf6t9CnEHEHqfdE2ue+HAKjyBpKeTmZ0oqbeZPSnpwhRiVq7T9APhjIZzhaYP0NrMlqUcd7GZnZpyzILiCSQ99ZKqohVJj/JoFXIldSccuqpcp6kJ607pC7d2+YxQimdyynG/knQR8B4rNr7E3D5ccDyBpOdS4HVCH4k3gN9EjLW8TpOkTJ2mSYRy2E9EjOtcDLsDX0qakVxPawqrPqGadGYqOPb5k4Lj/UBSJqkNMCvmcFzSc2a2X1KnaYKZbZrc/pqZ9Y4V17k0SepvZo/nIO5tPrUVeDXelEg6VNIAwsL5ZEnRmv9QfZ0mrybq1iZn5yiuchQ373gCSc/vgBcIheA6Ek64xpKp0zQEGJmU2XiS+HWanEvTWl/tIN95AklPar0FkhIQJwI7mFmmR/dtZnZtrJjO5YDPv+eYL6KnJ9XeAl6nyTkXm49AUmJmxwHbmtlTwGhfhHNujeVqCsunzhKeQFIiaQ+gl6QDgfGSvLigc7Ug6cQq189KLt4YOW5zSYdJOibzJ/nWvjHjFhKfwkrPMOBI4FbCvvZHgYdqfIRz6zBJRxB66PSRtHdycwmwDXCzmT1Z7YOz43FC+aFMD5/MYcKlkeMWDE8g6VlIqI67zMy+T7bVOueq9yzwHbA+oSwPhAoOaa3nFZtZKu1zC5UnkPTMJZzJGCXpdEKzGudcNcxsFvBP4J+S9gG2IGw+mZnSS5goaRdW7uGzJKXYBcETSHoOIxRU/FjSNsCduX5BzhUCSdcAmxCq4i4BLuLHbW5j2JOVz2tVEJKYS3gCSU8HoL+kQwi7ONoDg3P7kpwrCL3MbA9JL5vZvZJS2cFoZt3SiFPIPIGk5z7CafBehIW5Zrl9Oc4VjHqSGhEqWZcAZTGDSbrFzM6QNIEqhxXNbLeYsQuNJ5D0LDCzayVtaWbHS3ot1y/IuQIxHHgXaENYAxkeOd6VydcBkeMUPE8g6SmS1A5oJqkpocmTc241zOxPkl4EOhMqOkQdgZjZ1ORiCXADoZz7R8D5MeMWIj9ImAJJLYChwC+ABwj/CKL2J3dubSFppJnNMrO3gR2JXAaokjHAXYRp54eAu1OKWzB8BBKZpDMIrWSXAWea2bPAhrl9Vc4VlLmSriOsG25DaFOQhjIzy3zQe1JSzCZwBckTSHwDCf0DWgD3Ew5HOedqycwukXQD0NnM9oodT1KmVEmppPOBV4EehIPArhJPIPEtSg4fzZDkPcmdqyVJ37FiF1QR0FbSFIDILW0zZ0xmEs6edE2uL44YsyB5AkmXV/F0rpbMbKPMZUlNzaxUUnszmxI57qBV3S5po1Xdvi7zBBLf1pIeIiSPzGUAzMwr8jq3GpIuB1oS1hJvkvRO0jQtdtyhwGlAA6AJ8Cmwdey4hcQTSHyHVbo8OmevwrnC1d/MdgQws0OTds3REwhwAKGEynBC6fhRKcQsKJ5AIjOzV3L9GpwrcOWSGpjZEkn1Se/4wQ9mtlhSczObJKlJSnELhicQ51y+Gw18JOlDYCtCb500fCvpeMJurOsIOyldJUUVFd6X3jmX3yS1IVTC/dzMZqQQ72RgLLAR0BHoBvzDzD6JHbuQ+El051xeknRp8vVh4CbgbODmyhtRIsUdQmhbW8/MviJ0JNwbOCRm3ELkU1jOuXzVO/ma9uaTA4BdzSzTROpLSYcD41lRaNHhCcQ5l7/qQ042oszPJI8MM1sqaV7KryPveQJxzuWrTkk3wh8xs4sjxl0oaQsz+yJzg6QtqNIbxHkCcc7lrwWA5SDuBcDfJP0D+IKwiL4fcGwOXkte811Yzrm8lLSw7ZOj2C2B/oTW018BT5mZT2FV4SMQ51y+ejdXgc1sDqENtauBj0Ccc87VpwhhLAAAAClJREFUiZ8Dcc45VyeeQJxzztWJJxDnnHN14gnEOedcnXgCcc45Vyf/D0qH2xbUvHnyAAAAAElFTkSuQmCC\n",
      "text/plain": [
       "<Figure size 432x288 with 2 Axes>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "sns.heatmap(correlations*100, annot=True, fmt='.0f')"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 392,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "<matplotlib.axes._subplots.AxesSubplot at 0x26d1d199cc0>"
      ]
     },
     "execution_count": 392,
     "metadata": {},
     "output_type": "execute_result"
    },
    {
     "data": {
      "image/png": "iVBORw0KGgoAAAANSUhEUgAAAZAAAAEuCAYAAACgf0TJAAAABHNCSVQICAgIfAhkiAAAAAlwSFlzAAALEgAACxIB0t1+/AAAADl0RVh0U29mdHdhcmUAbWF0cGxvdGxpYiB2ZXJzaW9uIDIuMi4yLCBodHRwOi8vbWF0cGxvdGxpYi5vcmcvhp/UCwAAIABJREFUeJzs3XmczPUfwPHXXljsuo9EEvVOukhSqVC67ySJkkSl49dJB6Wi0KGUdKuIdN+liA5HuqTUu+ggV861du2u3ZnfH5/vatsWa3a+35ld72ePeZj5zne+7++MzHs+x/f9SQiHwxhjjDE7KzHWJ2CMMaZ8sgRijDEmIpZAjDHGRMQSiDHGmIhYAjHGGBMRSyDGGGMikhzrEyinbO6zMaa0Esp6gC1rfiv1d05K3b3KHK+0LIEYY0y8CxXE+gxKZAnEGGPiXTgU6zMokSUQY4yJdyFLIMYYYyIQthaIMcaYiFgLxBhjTESsBWKMMSYiBVtifQYlsgRijDHxrqJ3YYlIR2AKsBB3oV0qMFFVx0Qrhp9EZKWqNiy27USgu6r2js1ZGWNM2QbRRaQy8CywF7ARGADUAR4C8oGpqjo0kmNHu5TJdFXtqKqdgGOA60WkZpRjGGPMriUUKv3tvy4FNqlqe+Aq4BFgHNAD6AAcJiJtIjktP7uw0oAC4CARud3bVhW4EFiCa63UwLVUblLVGSIyHmgOVAHuU9WXROQYYJh3rMVAf+AC4GTveM2BEao6XkTaAY8CmcDfQI6q9haRq3AfVhiYrKoPe7HqeLdTCk9aRFoCzwBZ3m29D5+NMcaUXtkG0fcD3gdQVRWRQ4FVqroYQEQ+BI4FvtnZA0e7BdJZRGaIyHRgIi7btQJ6qmpn4C3gXNyXfkPgNNwXe1URSQM6AWcDJwFJIpIAPAmcrarHAMuA3l6sGqp6KnA6MMjbNg7o7cUq/HD2A87DZdoOwJkiIt7+01X1CFUtmiTuAoao6nHArOh9NMYYE6GCLaW//dd3wKkikiAi7XE/3DcVeT7T27bTot0Cma6q3YtuEJEzgIdFZBOwO/CFqv4oIo8Ck4AU4GFVzRSRK4EngHRgAlAP2A2Y4n3npwJTccnhOy/EUlyLBaCRqv7o3f8M6A7sDzQFpnnbawEtvPtawntoBXzp3f8CaLmzH4IxxkRV2QbRn8F9j32C+06bD1Qr8nwasCGSAwdRzv0p4GJvIHo5kCAiBwBpqnoKcBEwRkR2Aw5R1bNwXUojcW/qL+AMVe2I68r6xDtuSdUpl3otDoD23p8K/Ah08o4xHljgPVfS38rPwOHe/UN39s0aY0zUhUOlv/3XocDn3vff68AvQJ6INPd6eU7A/eDeaUFM430BmCsi64FVQCPgV+B2EbkQyAOGACuBhiLyLa55dZ+q5onINcC7IpKIm0FwIbDHNmJdATzjtXbygGWqOl9EpgGfe7MRvsR1hW3LFcBLInIjsBrIKcubN8aYMitbC+RX4C4RuQH3o/wS3HfoRCAJNwtrbiQHTgiHK87SFiIyAJiiqqtF5G4gT1Xv9CFUxfnQjDF+K/P6HDnz3yv1d06Vg0629UAitAqY6rVAMnDdY8YYU77FaSmTCtUCCZB9aMaY0ip7C+TrN0rfAjnkTGuBGGOM8diKhMYYYyISp11YlkCMMSbeVfRiisYYY3xiLRBjjDERsRZIxfHSbhfELPZ5KybGLLYxJjbCtqCUMcaYiFgLxBhjTERsDMQYY0xErAVijDEmItYCMcYYE5GC/FifQYksgRhjTLyzLixjjDERidMEEsSKhKaIpNRKHPvm7aS12C3Wp2KMKS/KtiKhb+KuBSIig4DjcMvNhoFbVPXrCI81GnhAVZdE+PrJwDhVnRHJ64urdVAz2o7oQ+putaNxOGPMrsJaIDvmrWd+OtBFVY8HBuIWhI+Iqv4v0uThh6RKKXze50EyFy2P9akYY8oTa4GUyt+4tXr7iMgHqvqdiLQTkRnAZar6s4hcBjQExgNvA2uB94CLgf1UNSwijwIfA9cAlwETgK6q+oeInAt0wK3D/jRQx4t9taou8JbF7QusAOpH882tmfdLNA9njNlVxOksrLhqgajqGlwL5Ehgtoj8DJy6nZc0BI5X1ZHA98BRIlIZ6IhLLoWeBi707vcGngRuAaapaiegH/CYiNTAJZ32wBlApbK+p/0HnkunV2+l06u3kpAY2EJhxpiKJBQq/S1AcdUCEZEWwEZV7eM9botrXawsslvRb+HfVTXPu/8kbg30hsBbqpovIoX7TQQ+F5GngHRV/UFEDgA6i8h53j61gH2BH1U114v/ZVnf0w8jXi7rIYwxuzobAymVA3EtgSre41+ADFw3VeG0pTZF9i/6qU4DWgN9cC2OrVR1I/A18CDwrLf5Z+BBVe0IdMMlmd+A/UQkVUSSvOMZY0xshcOlvwUorhKIqr4GzADmisgXwIfAjcAo4FER+RBI2sZrw8ArQCVVXVTCLk8CJwEveY+HAd288ZUPgB9UdTVubGQW8D6QFZ139m+fnDOMzEUr/Di0MaYiitMurIRwwBmrInhptwti9qHZeiDGlDtlHvzcPHFwqb9zUi+4K7DB1rgaAzHGGFOCOJ2FZQnEGGPiXZz2FFkCMcaYeBens7AsgRhjTLyzBGKMMSYitqCUMcaYSITzC2J9CiWyBGKMMfGujC0QEbkZVyaqEjAWmImrJxgGfgAGqOpOB7EEEoHcGNW0ejd5E681PTPwuC/9+UbgMY0xRYQin4UlIh2BI3A1BqsCNwAPALep6gwRGYer/ff6zh47rq5EN8YYU4KyXYl+ArAAlyDeBt4BDsG1QsBV3TguktOyFogxxsS7ss3Cqgs0xVU2bwa8BSR65Z8AMoEakRzYEogxxsS7sl1IuBb42atcriKSAzQp8nwasCGSA1sXljHGxLv8gtLf/utz4EQRSRCRRkA1YJo3NgKuyOxnkZyWtUCMMSbelWEWlqq+IyJHA1/iGg0DgN+BJ0WkEvATrpL5TrMEYowx8a4Ms7AAVPWmEjYfU6aDYgnEGGPiXjhOS5nYGEgMtB/RhzY3n7fjHcug3UmHM/ytUQx7cySdu/97hl56nRo8OvspGjXf3ddzMMZESShc+luAymULxBv8mQIsxF1JmQpMVNUxJew7A7hMVX8O8hy3Ze+enanVsgmrZvt3OgmJifQY2IubT7uBnKwcHvh4DPM+nEvm+kySkpO4dPjl5OXk+hbfGBNlcVoLqzy3QKarakdV7YTry7teRGrG+qS2p+4hLajXpgW/TJjua5xwKMR1x17J5sxs0mqlQQLkZOcA0PPW3nw88QPWr1rv6zkYY6KobLOwfFMuWyAlSAMKgINEZARuCcllwAWFO4hIY+AxoApQB7hTVd8QkWFAZ1wynaSqo0XkCuAiIAR8rqo3lvUEU+vX5ODrzuaTS0az5+mHlfVwOxQqCNHuxPb0uasf307/mvwtBRzTtTOZ6zYy/9PvOOOKrr6fgzEmSgLumiqt8pxAOnvdUyFgC3AV8DDQXVV/8pJAyyL77wvc79V+OQIYCrwBXAgcDSwHenv7XgxcpapzRORyEUlW1YjWlDz4pq7UP1So1bIJWcvWcOwLN5JavwbJqZXIWLycxVMimn5dovNu6IG03Q+Au3oM4csP5jDvw7lccf/VHHNORzqeeyzhcJj9jzyIPfdrxoAHrmFk3+FkrI7oGiJjTFDitAurPCeQ6aravegGEXlGVX8CUNWx3rbCp1cAt4nIJbhxkxRve3fgHqAhriYMuARyg9eamY1r0UTku5H/nV7dvNtR1GjeKKrJA+Cl+14EILV6KkMm3cmwXneQn5dPTnYOoVCYO7rdunXfIZPv5qlbH7PkYUx5EKctkPI8BlKS5SKyN4CIDBSRs4o8dxfwvKr2Aj4BEkSkMnAucD6uG6u3iDQFLsUNvB8DtMZVsiw3Nm/azOdvfModU4Yz9JXhAHz2+swdvMoYE6/CoVCpb0Eqzy2QkvQHnhGREK7FMRq4xnvuZeBhEVkJLAXqqmquiKwDvgPWA1OBJbjKlfNEZDVuLGVuNE8y2i2PkkybNJVpk6Zu8/k7u9/m+zkYY6IkPz67sBLCZSvStUt6fveeMfnQ3k3eFIuwth6IMWVT5gWENt1wRqm/c6rf92ZgCxZVtBaIMcZUPHE6BmIJxBhj4lzYEogxxpiIWAIxxhgTkTgtpmgJxBhj4l2czsKyBGKMMXEuXmfLWgIxxph4Z2MgFUedgCteFuqUWD3wmO8nbOCMPU4NPC7Am0veiUlcY+KOJRBjjDGRsGm8xhhjImMJxBhjTCTC+ZZAjDHGRMJaIMYYYyISn5eBWAIxxph4Z4PoxhhjImMtEANQqW46HaYOZ2634WQtWh5IzL3PPIID+51MOBTi55dmsvCFab7FOvykIzjniq6EwzD1xQ/4aPJUOnc9ls7nHgdApcopNNtvL3q37UXWxizfzsOYisQG0eOAiAwE/gc0U9WcoOMnJCdxwKi+FOTkBRq3/W09mHLcQLZk5XDe9JEsems2eRnZUY+TmJjIhYN6c/2p/yMnK4dHpo1lzodzmP7KNKa/4pJW/7su4+MpH1nyMGYnhOO0BVLR1kTfkQuAyUD3WARveccF/Pncx+SuXB9o3HU/L6FSWlWSKldya6P59GMmFAoxoPNlZGdmk1YrDRISyMnevPX5Fge2oMk+TZn64of+nIAxFVVoJ24B2mVaICLSEVgMjAMmAONFpB3wKJAJ/A3kqGpvEbkK6IH7qp2sqg+XNX7j844mb20ma2Z8T4urzyjr4XbKOv2Lc967i/zsXH5//yvyNka/9VEoVBCi/YmH0//uy/l62jwKtvxT9qXrgG68NPpF32IbU1FZCyT2+gJPqaoCuSJyGC6Z9FbVzrjkgojsB5wHdPBuZ4qIlDV44/M7UvfoA2j/2mDS92/KwY9cTuV6Ncp62G069MaunD7lVnovGMeeXdrw4hHXMvHw/1Glbjp7ndIuqrEuuKEnd790D3e/dA+JiYnM+WA2fQ69iORKKXQ6pzMA1dKr0bhFYxbMXhDV2MbsEqwFEjsiUgs4GajvtS5qAFcCjVT1R2+3z3BdW/sDTYHCkeZaQAtAy3IOc868c+v99q8NZsFNT5O7OqMsh9yueaNeAaD67nU48alryc/JIxwKk7NmI5VrVItqrIn3TQAgtXoqd00exu09B5Ofl09Odg4h76dTq8NaMf/z76Ia15hdRVlaICKSBDwJCFAAXIzrzB6P62X5ARigqjsdZZdIIEBP4GlVvRFARKoCvwPZIrKfqi4E2nv7KvAjcJKqhkXkWqDc/mzetGwtCydO58zXhlCQl8/GP/9GX/7Ul1ibN21m5hszuOflEeTn5/PHT38w87UZAOy+V2NWLlnpS1xjKrpQfplefhqAqh7pdeU/gEsgt6nqDBEZB5wBvL6zB95VEkhfoFfhA1XNFpFXgVXAMyKyCcgDlqnqfBGZBnwuIpWBL4Fl0TyZOWffFc3D7dDCCdNZOGF6ILGmvvhhiYPkrz/+WiDxjamQwgkRv1RV3xCRwrURmuK+904BZnrb3geOxxJIyVT1oBK2XSEiA4DTVHW1iNyNSyKo6ihgVMCnaYwxJSrrILqq5ovIc8BZQFfgVFUtnI+ZievW32m70iB6SVYBU0XkM+Bg3IwsY4yJK+FQQqlv26KqFwH74MZDUos8lQZsiOS8dokWyLao6ivAK7E+D2OM2Z4yDqL3Ahqr6j1ANm6u1lci0lFVZwAnAZ9EcuxdOoEYY0x5ECqIfAwEeA14VkQ+BVJw1Th+Ap4UkUre/Yh+SFsCMcaYOLe9rqkdUdUsoFsJTx0T8UE9lkCMMSbOheOzlqIlEGOMiXdlaYH4yRKIMcbEOUsgFcjKlKSYxK0ag4Jq1+RXDT4o8GyVfHo1PTsmsV/40y56NPHFurCMMcZEJFQQn5fsWQIxxpg4F6/l3C2BGGNMnAuVoRaWnyyBGGNMnAtbAjHGGBMJm4VljDEmIjYLyxhjTEQKbBaWqXvQXhw25AJIgM2rM5h59WMU5G4JLH77EX3I25DFN/e85GuchOQkWo4ZQGqTeoQLQvx8/eNkL1rua8y2J7XntMvPJhwO88mkj5g5+eOtzzU/eG/OG9SL4d2H+HoOxvjFxkB8JCKDgONwZYrDwC24FQgfAPoAK1V1XLHXtAPuxi3tmAi8p6r3+3meHUZewrT+D5P5xyr2Ob8j1XevS8ZvK/wMudXePTtTq2UTVs3+2fdYdY5rTUJSEl+fOphaRx/AXjefzw+X+PfRJiQmct7Angw57SZysnIY8fFDfP3hXDatz+SU/mdy5NnHkJud61t8Y/wWr11Y8dku2gkish9wOtBFVY8HBgLPqOr/VHXJdl76CHC1qnYBTgS6i0hrv86zxl67kbt+E/v3PYGTX7mVyjWrBZY86h7SgnptWvBLQMvaZi9eQUJyIiQkkJxWlXB+2RZ03pFwKMTAY69mc2Y2abXSICGB3OwcAFYtWclD/Uf6Gt8Yv4XCCaW+BancJxDgb2APoI+I7K6q3wHtRGSGiOzr7XOWiEwXkTleywPgT+BKETkE13I5UlW/FZHeIvK6iEwTkfkick40TrJy7erUb7s3Pz33Me93v5dGR7ZityNbRePQ25VavyYHX3c2c28Z73usQgVZOaQ2qUf7Lx5k3/v7s/TJ932PGSoI0fbEwxj2wQPolwvJ31IAwFfvz6HA5wRmjN/C4YRS34JU7hOIqq7BtUCOBGaLyM/AqcV2+11VOwOXAIVdWZfglrR9DJeE7heRyt5z1YEuuIXmHxCRiLv6DrmxKye/fCvHPnENG/9YxYZflxPOL+CvGd9T98A9Iz3sDh18U1eOf/lWTp9+L1XqpnPsCzey/4DTaHbW4TTvdpRvcQGa9D+FtTPmM+eI//Fl5xvZb8wAEiunRD1O1xvO55bJd3LL5DtJSEzkqw/mcnW7viSnJNPhnI5Rj2dMrBSEEkp9C1K5HwMRkRbARlXt4z1uC7wHrCyy26cAqvqjiDQUkSpAG1W9C7hLROoAzwD9cAvMz1TVELBKRNYD9YCI+pu+HuUW+kpMSaLrzFGk7dmAzD9W0fAw4ZdJMyM5ZKl8N/K/C4w173YUNZo3YvGUz3yLC5C/IWtrt9WWDZtISE6CpOj/VnnlvkkAVKmeyi2ThjKi11Dy8/LJzc4hHIrT2g/GRCBeB9HLfQsEOBB4zEsKAL8AGUBBkX3aAYjIAcASXJfVBBHZH0BV1+K6tApHWg/x9m8ApONaKGUS2lLAZzc8RadHruD0d+4ka/k6lk7/rqyHjUtLH3+H6gfsRZs3h9L61SH8ds8kQj4OYuds2sysNz7ltil3c9srwwgDX7z+qW/xjAlavI6BJITjdXh/J4jIrbglGzfhkuII3Lq/lwHdgdZAGlAZuEJV54vIEcAoXCssDMwDrgV6Av1xi8/XAG5T1Q+Kxnu6cc+YfGgpMYjaOD8v+KC4cu6xYuXcTZSV+Vt9TqOzS/2vv/3y1wLLIuW+CwtAVYcBw4ptfsP7845tvGYWbtzkX0QEXBfWoCieojHGRMyKKRpjjIlIvI6BWAIpRlXHx/ocjDGmqIKy94L5whKIMcbEuVCcDlVbAjHGmDgXshaIMcaYSIQtgRhjjIlEvF4WawnEGGPinLVAKpD0gtiMaNUJBbd2SFEbE4L/32SPGMQEuOmYVWRcdGxMYtd4blpM4pr4F6/lQC2BmO2KRfIwxvybtUCMMcZEJOAiu6VmCcQYY+JcWabxikgiMBY4CFcwtq+qLorGeVWEarzGGFOhhXfiVoIzgSqqejgwCIja+tKWQIwxJs7lJySU+laCDsAHAKo6B2gbrfOyBGKMMXGujC2QdNwaSYUKyrLKalE2BmKMMXGujBcSbsSth1QoUVWjMjPYWiDGGBPnQgmlv5XgC+BkABFpDyyI1nlZCyRAu3VpzX7XnUU4P8Tvk2fy+8RPfI+ZkJxEyzEDSG1Sj3BBiJ+vf5zsRct9j9nmwX6kNqlHUuUU9MHXWTn1G19jAqRUqcTFE27mtYFPsmbxcpIqJXPOqP7U2qM+uZmbeXvIeNb+sTKqMRPSalJ96GNkjbqJ0IqlAFTpcTmhFUvJ++SdqMYyu64yFlN8HegiIrNwqyNeHJWTooIkEBHpCEwBFuK6AVOBiao6JsLjzQAuU9Wfo3WOCclJHDy0Jx+fNJj87Fw6v3U7y6d+Q+7qjB2/uAzqHNeahKQkvj51MLWOPoC9bj6fHy6J2iSMEjXp2oG89Zv4+qrHSKlVnU4fDfc9gex+QDPOGHYJ6bvV3rrt0O6dycvK5fGzbqfuXrtx2p29GX/hvdELmpRE6sXXEt7ilv1NSKtBar9BJDZsTN6Kl6IXx+zyylL7QlVDuOW9o64idWFNV9WOqtoJOAa4XkRqxvqkCqXv3YhNf6xiS0Y24S0FrPnyF+odJr7HzV68goTkREhIIDmtKuF8/4siLHtrDj+NeHnr43CB/6XgkiqlMLH/A6xe/E/rqv7eu/PLzO8AWPPbCuo1bxTVmFW6X0be9LcJr1/jNlROJff159jyxUdRjWNMfkLpb0GqEC2QEqQBBcBBInK7t60qcCGQB7wNrAXeA2YCD+GadsuAC7z9bxeRBkA14HxV/a0sJ5SclsqWjZu3Ps7ftJmU9KplOWSpFGTlkNqkHu2/eJCU2unM7xnFX+DbipmdC0BytSq0e+oafrp3iu8xl3z9y3+2rVj4J9K5NQs//IomrVuQ3rA2CYkJhKOwOk9KhxMIZ24g/4evqHzq+QCE16ykYM1Kkg9sV+bjG1NUnK4nVaESSGev6ykEbAGuAloBPVV1uYjcApwLTAQaAoeoap6IzAe6q+pPInIF0NI73ruqOkFE7gC6AiMjOalWA8+lbrt9qNlyD9Z+u3jr9uTqqeRlZEf0RndGk/6nsHbGfH4bNonKjerQ+tUhfNnxBkK5/hZmTG1Um3bPXsfv4z/ir9dn+RLjuOvPpemhrhX3TI9h/0kMX0+ZQb0Wjbhk8m0s+eoXli/4PSrJA6DS0SdCOEzyfm1I2qMFqf0GkT36NsIZ66NyfGOKslIm/puuqt2LbhCRM4CHRWQTsDtuNgLA76qa591voKo/AajqWO91AF97z6/EJZyI/Oh15SQkJ3HCzJGk1KxGflYO9drviz72bqSHLbX8DVlbu622bNhEQnISJPnbc1m5bjpHTL6Z+beMZ83nP/oW5+P7X97u87sf1Jw/5ynv3TWB3Q9oRu2mDaIWO2v4tVvvVxt0P5ufG23Jw/jG1gOJjaeAvVQ1U0Seg61TGYr+fSwXkb1V9VcRGQgU9oVEtdUYzi9g/h0TOHrSQBISE/l90kxyVvr/hbP08XfYd/QVtHlzKAmVkvntnkmEvC4mv+xzzZmk1KzGvtedBdedBcCsHiMI5QRbjn7t7ys57rpz6dDvVHI2ZvHaTU8EGt+YaLEEEhsvAHNFZD2wCihpFLU/8IyIhIAVwGjgGj9OZsVH37Lio2/9OPQ2FWTn8mO/BwONuWDw8ywY/HygMQs93f3urfez12fybM/hvsfMuvf6fz3OfSM2791UXOE47cJKCIfjdXgmfr282wUx+dBisaBUrNYDmVclJmG56ZhVsQmMLShVgZX56/+RJj1L/Z1z5dIJgaWbit4CMcaYci9ef+ZbAjHGmDhns7CMMcZExAbRjTHGRMQSiDHGmIgUWBeWMcaYSFgLxBhjTERsFlYFkhSja2ea774u8Jgn/OVvuflteSJnz5jE/X1GtZjErVo1j1UtT4xJ7H1++iAmcU3pheI0hVgCMcaYOGddWMYYYyISn+0PSyDGGBP3gl4oqrQsgRhjTJyzMRBjjDERic/0YQnEGGPing2iG2OMiYh1YRkAarVuzv6Dz+ezs+/e8c6RSk6izu03kNyoIQkpKWQ8NZHcBT9RZ/B1JKZXh8RE1g4ZQf5fK6IeuvdlPTinxxmsX+tWW7z9hnv4ffGfzJz/Ln/+thSA775awAPDHo1q3LTWLWg2uCffn30HVfZsiDw0AMJhsnQpiwY9BT5du1P14H1oNOgiFnW/leQ6NWhy75Uk1agOSYksufZB8pasjG7A5CQaDruO5EYNSKyUwtpxk8hf8Tf1br0CQiHCeVtYOWgUBWs3RDeuiamCWJ/ANlTYBCIiewLfA98U2TxdVe+MzRnB3gNOZY+uHSjweUnZaicfRyhjI6sGjyCxRjq7vTiOnHnfkvX+NLI/mknltgeRsuceviSQ/Q7cl0FX3s6P3/+8ddsezRqz8Hvl8l7XRT0eQOMBp9Og6zEUZOcA0HzoRfwxYhIZsxbSYsSl1DnxUNa+/2XU49bvfza1zu64dYngRjf3Zv0bM9jw7hdUP/wAqrRoHPUEkn5aZwo2bGTlwFEk1kyj6auPsmXZSlYPG0vuz79Ro9vJ1O7bjdUjbPneiiReWyCJsT4Bny1U1Y5FbjFLHgBZf6xiTp/RvsfJ/mgmG8aO3/o4XFBA5YNbkVS/LvUfG0m1k44l56v5vsRudeC+9LumNxPffpJ+V/f2trWk/m71eO61x3j8xdE0a940qjFz/ljFj31GbX1c/cC9yJi1EID107+l1tEHRDVeodwlK/i9/z1bH1dr25KU3erSfOKd1DrzGDbNXhD1mJkffsaah/5ZMjdcUMCK6+8l9+ff3IbkJEK5eVGPa2IrvBO3IFXYFkhJRCQJeBxoAtQB3lfVwSIy3ntcBzgFuAk4GpdgH1DVl6MRf/m786japG40DrVd4c3ul3hC1VTqjRzChrHPUnfoTYQyN/H35TdR49KepPc+j4xxz0U99ntvTGXiMy+TlZnFmPGj6NilA6tXreGJh8bz4dvTaHPYQYwceyfnnnBR1GKueXculZvU+2dDkTnzBZtySEqrGrVYRWW8P5tKjetvfVypcX0KMjax+IIhNLj6POpffg4rH3gxqjHD2f/83TYafRtrH3qOgtWuxE2Vg1tSs8dp/NXrxqjGNLEXr4PoFb0Fsp+IzCi8Ae2BOap6AtABuLzIvtNV9Qhvn2aqeiTQCbhVRGoGfeJlldSgHg2euI9N731M9gfTCWVsZPPM2QBkfzqHyvvtE7VY1wy6jOdfH8cYcSuOAAAgAElEQVQLbzzOc49PYsO6DLZsyWfmx1/Q8gDhh/kLmf7BTAC+mTufBrvV28ERyyj0z++wpOpVyN+Y7W88T/76TDI+cl1lG6fNo+qBLXyJk9ywLk2eG8HGt6aR+e4MAKqfdDQN7ria5ZcNoWB9bOqXGf+Ed+K/IFX0FshCVe1Y+EBE0oELRaQTsBGoXGRf9f48ADjESzgAKUBToNyMSibWrkmDsfeybsQj5Hz5LQA53/1Aaod2ZL37MVXaHEDeb39GLd5D944DoHpaNd7+9CVO6XAu2Vmbad+hLa+++BYDbriUDeszePqRF5BWe7P8rygPLBez6YffqXHEfmTMWkitzq3JmPWjr/EKZX21kPROh7D+9RlUa9eKnF+WRD1GUp2a7P7UcP6+eyyb53wHQNppnanR7WSWXnQjoYxNUY9pYi9eWyAVPYEU1xvYoKr9RaQF0E9ECjs8Cv+OfgY+UdV+IpIIDAZ+C/5UI1ejTw8S09Ko0bcnNfr2BGDN7SOoM/h6qnc9jfCmLNbcMjzqcTdlZvHg8Ed57rVx5OXlMeezeXw6bRbffbWAkWPvpONxHcjPL+Dmq4dGPXZRv93xPHvffxmJKclk//oXq9+e42u8QsvufoY9RlxF3V4nUZCZzZ9X3Rf1GLX7dScpvTp1Lu8Bl/eAxEQq792ULcv/ptHDQwDYPO971j4yIeqxTewUxOkgekI4RqXJ/ebNwpqsqu2LbGsFTAYygSzcWMixwDBv3w+8hHI/cChQHXi9+OD7aw17xORDO6TR34HHjFk598Q9YxI3vbK/M+S2pWrV2A18Wzl335W5klX/Pc8t9XfO43+8HFjlrArbAlHVP3DjGUW3/Yjroiqud5F9woA/802NMSYC0e7CEpFqwItAbdyP6V6qulpE2gMPAfnAVFXdbndBRR9EN8aYcs+HQfRLga9V9Shcr8xt3vZxQA/cJKPDRKTN9g5iCcQYY+JcaCdupaGqo3Fd9wB7AKu8SUaVVXWx1xPzIa6Lf5sqbBeWMcZUFGWZnisilwDXFtt8sarOE5HpuG79LkA6bnZqoUxgr+0d2xKIMcbEufwyTHZS1aeBp7fxXGcR2Rd4F2gNpBV5Oo0dXL5gXVjGGBPnol3KRERuFpFe3sMsoEBVNwJ5ItLcm416AvDZ9o5jLRBjjIlzPhRTfAZ4zuveSgIu9rZfBkz0tk1V1bnbO4glEGOMiXPRLlGiqquAE0vYPodilz9sjyUQY3ZhdhFh+WClTCqQs1dGt8JqPPt5x7sYY3xWEKcpxBKIMcbEufhMH5ZAjDEm7sVrzUJLIMYYE+fidUlbSyDGGBPnrAvLGGNMRIJeabC0LIEYY0ycKwjHZxvEEogxxsS5+EwfO0ggInI/cAjQEKiKW9p1C/BZ8VX6irxmpao23FFgEakNnKiqEV9UISKDgOmq+mUp928IDFHVKyKNaYwxQSuXXViqej2AiPQG9lXVQVGMfSBwOm5VrIio6r07uf9KwJKHMaZcqTCzsESkI3CZqnb3CnFdjiu89aaq3lFkv+FADeBKoCtumdgC4HMvEd0KHCQi/VT1iW3EWgTMAvYGpnvHaweoqvYSkfG41bR+A8bjWkf5wIVAHvASruJwCq5IWCbeOuki8j0wE5fIwsAZuFr4jwJtgZVAM+A0b3lcY4yJiXi9DiTicu4iUh8YBByF6+aqISLVvefuA5JVdQBQCxgKHKuqHYDdRaQLbjWs6dtKHp49cUstHg1cDYwFDgM6iEjNIvt1Ab4GjvOOWwuXaDKAk7zXphc7djowSVWPAZZ5+50O1FHVdsAlQJOd/FiMMSbqQoRLfQtSWQbR9wJ+UNXN3uNrAUSkAe5X/SJvewugHvCeiIBbpGQvQEsRY62qLvGOm6WqC737GUCVIvs9DQwEPsAljVuA93EtlzdxLZO7Szj+t96fS73j7QnMBvAWmLdSUMaYmIvXWVhlWVBqMbCviFQGEJFXRGR3YBVuIZJWInIi8DvuC7qLqnYExgBzcRMLdhS/tOn0DNzA/rHAy7hk0hFYoarH45LH8FIc/wfgcO/91AL2KWV8Y4zxTbQXlIqWiBOIqq4GRgAzRWQ28I2qLvOeCwN9gEdwieIBb7+5uK6iX3AJ6AAR+V/Z3gIAXwHDROQz3FjHGGA+cKl3bqOAe0pxnHeBNSIyC9eqyca1XowxJmbitQsrIV4HZ2LBWxv4YFWdLCJ1gB+BpqqaW2xX+9CMMaWVUNYDHL57p1J/58xe9kmZ45VWzC8kFJHTcTO0intIVV8P+HSWAiO8VlESMLCE5GGMMYGK1x/61gKJjH1oxpjSKnOL4NBGR5f6O2fe8k93nRaIMcaY7YvXH/qWQIwxJs5VmCvRjTHGBMtaIMYYYyJiLRBjjDERKZfVeE3J3mjYIyZxD2+5LPCYu3+xaMc7+WDRfvvFJO6M1Q1iErdefkFM4h5zQVZM4lZ/4K2YxC2v4rWUiSUQY4yJcyEbAzHGGBMJ68IyxhgTEWuBGGOMiYi1QIwxxkQk2i0QEUnCVUlvC1QG7lDVd0SkPfAQbmXXqao6dHvHKct6IMYYYwIQCheU+lZKvYAUVT0St55SC2/7OKAH0AE4TETabO8g1gIxxpg458OFhCcAC0TkXVyxx6tEJB2orKqLAUTkQ+BY4JttHcQSSEASkpNo82A/UpvUI6lyCvrg66ycus2/l7JJTCT9hhtJatIECkJsHHkvCalVSbv6GggVEN6yhY33DCe0fn1UwzZoUI8XJ4zd+vigg1pxy633MGHiK0x44VFq16pJVlY2F118NWvWrItO0OQk6t5xA8mNGpBQKYUNT75IwarV1H/4LvKXuOtmNk55m+ypM6MTbwcOH9GHvA1ZfH3PS4HEq1Q3nQ5ThzO323CyFi33NVZC9RqkXvsAmx8fQkJyJSqfewUUFBBavZzcKWMgTgd6K4KylDIRkUvwlhwvYjWQA5wKHA08i2t5bCyyTyZu+fFtKlUCEZFWwEigKlAdeA/XZ/afdyUi44HJqvpBkW0NgSGqekVp4pWWiBwMnK6qd+7Ea0YDDxSutR6UJl07kLd+E19f9RgptarT6aPhviWQyocfAcD6q64k5aCDqX7FABKrVyfz4YfIX7yI1NNOo+r5Pdg09tGoxl21ajXHdjkXgPaHHcJddw7kqacncuWAPnzzzffcPWw0F/bqxi03X8N1198elZjVTzmOUMZGVt42gsQaaTSaPI4NT0xg4wuvsvGFV6ISo7T26dmZWi2bsGr2z4HES0hO4oBRfSnIyfM/WGKSSxhbXKxKJ3Qnb+pkCn76msoXXEdSy7YULJzn/3nsosrSAlHVp3ErrG4lIpOBd7zv8Jkisg8ueaQV2S0N2LC9Y+8wgYhITWAycLaq/uoNvrwM9Mf1l5XmDawEopo8vON+B3y3k6+JxhK6O23ZW3NY/vbcrY/DBf5dWZr7xefkzp4NQFLDBoTWryfzgfsJrfN+9SclQZ6/XzqjR9/FhRddRSgU4uExT5GY6Ibb9tijEX//vSZqcbKmziTro0+3Pg4XFFCp5d6k7NmYqh0PZ8uSZawb9Rjh7M1Ri1mSeoe0oF6bFvwyYTo1mjfyNVahlndcwJ/PfUyLq8/wPVal0y9my6wPqHRsVwAKlv1GQlX3XZNQORVCsbmSflfhQzHFz4GTgVdF5CBgiapuFJE8EWkO/Ibr5truIHppWiBnANNV9VcAVS0QkQuBLSLyFNAEqAO8r6qDvddcISI3ese/BDeiP1lV24vI98BM4EDcwkxnqGpGSYG91swWoClupsBk4DRgD++8mgCXqWp3b9/mQBXgPlV9SUSGAZ1xkwUmqepoEZmBWze9O9AMqO8d/1pV/VBETgXuBDKA9cD3qnpHKT6n7SrIdgsbJlerQrunruGne6eU9ZDbFyogfdDNVO5wFBl3DNmaPFJataLqmWez7pqrfAt96qldWLjwF375ZfE/pxMK8dGHU9h//3058eTzoxYrvDkHgISqqdS7bwgbHn2WhEqV2PT6++T99Cs1+vagZv9erH/wiajFLC61fk0Ovu5spl8ymmanH+ZbnKIan3c0eWszWTPje98TSPKhnQlv2kiBfgteAgmvXkHlc/pT6bhuhHOyKFi0wNdz2NX5UMrkSeAxEZmDGwO5zNt+GTARtyLrVFWdu43XA6VLII1w2WgrVd0kInsCc1S1r4hUAf4CChPILFW9V0ROxnV9FV2yNh33ZX6ViEwETsIlhm35Q1UvFZFxQDNVPVlEhuISyXcAIpIGdMJNSQsDx3uvvRDXv7cc6F3CsXNV9SQR6QJcLyIfAw8Dh6vqKu/8oia1UW3aPXsdv4//iL9enxXNQ5do4733kFjrcWqPfYw1F19E5cMPp9oFvdhw80DCGSXm7IjcOfQmjjziUAC6nHAeF/Q4hzFjnvrPfl1O6IZIc95643mk5ZFRi5/UoB71H7iDzClvkfX+JySmVSOU6Wo8ZU//nNoDr4xarKJa39SVBocKtVo2YdOyNXR54UZS69cgKbUSGYuXs2jKZ77EBWh8fkcIQ92j9id9/6Yc/MjlfNXrPnJXR+/vtVBKuy5AmOR9DiJx92ZU6XEtiY2asfn+/xFatZSUI0+m0ul9yHvt8ajHNk60WyDeUt19Stg+B2hf2uOUJoH8CfxrKpeINMP9+j9URDrh+s4qF9mlsE9hFjCqhGN+6/25FNdi2J7CgYINQGHn8vqir1PVTBG5EngCl6AmeE91B+4BGgLvl+I86gEbVXWVt/0z77VlVrluOkdMvpn5t4xnzec/RuOQ21Sly/Ek1qtH9osTCefmQDhMlQ5HkXra6ay/9hrCmZlRjTfk9pH/etym9QHMmv3V1scDb7qSv5atYOLEV8nK2kxBKHq/phJr16TBY/ey7t5HyPnS/XU2GHsPa0c8St4PSpV2rcn76ZeoxSvq25H/HWNp0e0oajRv5GvyAJhz5j/Dfu1fG8yCm572JXkAbH705q33U68YRs4rY0m9+FbCua5bMLRxHcnNWvoS2zjluZz7O8AtIvKYqi4WkRTcBSifABtUtb+ItAD6iUjhWrztcMnjKOCHEo65M5/GDvcVkd2AQ1T1LK81tFREXgTOBc7HNdF+9AaOtnfsv4E0EamnqqtxmfiPnTjXbdrnmjNJqVmNfa87C647C4BZPUYQytkSjcP/S85nn1Jj4CBqjX4YkpPJfHQM6TcNouDvVdS88y4A8ubPJ2v8s1GPXbdubTI3/bvC67PjJ/Ps06Pp07s7SUlJ9O1bfEJI5Gr27UFSenVq9rsA+l0AwLr7H6f2jZfDlnwK1qxjzV2joxbPODlTxlCl141uVl9+PrlTHon1KVVo5XZBKW9g5SLgSRFJxI3Mvw1MAyaLyFFAFvArrrsLoL2ITMd9QfchCovK78BKoKGIfAtswo2B5IrIOlw313pgKrDdmVeqGvJaMu+JSAZu7OTXaJzggsHPs2Dw89E41I7l5JAx9I5/bVp9xmmBhF6zZh1tDz3+X9v+/nsNp5zW05d460aOZd3Isf/ZvvKimMyV8L3lUZI5Z98VWKzNY28FIMwyNo8ZGFjcXV281sJKiNfMFisicjNumm+uiEzADST965v/jYY9YvKh2Xog/rP1QIKxi60HUuYf0LWqtyj1d876TYv8/sG+VcwvJBSRSrjWQXGqqv2DPh/cxTNzRCQb130VzBVhxhizDbag1Daoah7QMdbnUUhVHwGsQ9cYEzfitQsr5gnEGGPM9lk5d2OMMRGxFogxxpiIxOtkJ0sgxhgT50I2iG6MMSYS1gIxxhgTkfhMH3YhoTHGmAjZmujGGGMiYgnEGGNMRCyBGGOMiYgNopsKQ0T2BloAC4Bl3nrPxhifWAKpgETk6G09p6qfbuu5KJ9DIq4K6RHAXK/mmZ/xrgTOAmoDz+ESiT9LEf43diJuMbK/g0pa3oqgXYGqhdtU9c5tviC6sdNxy0D/pqq+l/MVkT2KbdoCrFHV6C+m8++4Q0qIuxR4ye/Y5YUlEJ+JyLNsYxaeqv5nSckoudz7szlQCZgHtMatldLRp5hbicgI3DLITXGrWa4CLvI5bHfcAmbTVXW0iMzzOR4AInI2boG19bjFyC5X1Y8CCD0J+AC3Fk5gRKQrcCvuu2OKiIRV9W6fw74DNAYU2Ae3/lCyiNykqhO2+8qyOQjYjFuZtD1uFdYVwAlALx/jlhs2BuK/ybiS8LVxS/I+DXzPjpfyjZiqnq+q5wOrgbaqeilwGJDjV8xiOqjq47i15U/E/eP3W+H/y4XJOjeAmACDgXaq2ho4EhgWUNxsVR2qqo8X3gKKey3uy3QNcDeu1ee334F9VPVwXMtyHrA/cJXPcWuqak/v870YCKlqL6CZz3HLDUsgPlPVD1X1Q6Cqqo5U1S9UdTSuy8NvuxW5nwzUDyAmQJKItAP+8NZ7CeK9TgI+BVqIyHvAGwHEBFirqn8DqOoqYKOfwURkHxHZB1glIj3EKdwWhJCq5gJhr7suiBWpGqjqGgBVXe89Xgf4Xd+jpojUBRCROkANb0nvqtt/2a7DurCCU11EOuN+PR2B61ry29O4teB/APYDbg8gJsDzwBjccsYjgYf8DqiqY0TkY9wv059VdYHfMT0bReRDYCbQFqgqIsO9c7rFh3hFWxqXejdwLa/OPsQr7jMReRFoLCLjcP8/++1rEZkEzAYOB74TkfNwXaN+uh2YKyIbgeq4Fs/1uH9XBrsSPTAi0hK4E2gF/AQMUFXf+6+9Ac99cQOea/yOV0L8Jqq6NIA4zxTbVDjg+aj3q9WvuNsc21HV53yMWwVoqarfisiZwLtBDOyKSA3cl/gBuET9tt8xvbinAy2BBar6nogIsFRVs32OG/gEifLEWiABUdWfgHODjCkirYBxQE1gooj8oKrvBBD3atzgY03gYhH5QFWv8zlsKrCYfwY8DwX+xs3IOt2PgCJykKo+53XTXYobd3lGVYMonToB+Bj4Fjew3A3oEUDcd1W1A24APxAikoYbM1wB1BWRC1X1+QDidsGN+VTxHqOqQbTyyg1LID4TkRW47oUEis3GUtVGPod/GLgYeBLX7H4fN6PFb+cDx+C+ZFoB0wKIWc+bOADwoYhMVdXBIuLLtGURuQ44T0SOBEbhZpz9CTwIXONHzGJ2V9VxAKo6UkQ+CSAmwDoRuQY3IyrkxZ/qc8w3geW4FiUEV1vwQeB/ReKaYiyB+ExVdwMQkZqquiEG8Rd5Uy1Xi0hmQGHDuAH8VaoaFpHaAcRMF5F9VfVnr7uwujfwWd2neCfhxrLCuF/++6jqehGZ5VO8/xCRfVT1FxFpDiQFFHYtcLB3A/f+/U4giara0+cYJVmiqh/HIG65YQkkOO8AHQKOuU5E+gPVRKQ7EFQC+wQ3I+p8EXkQeDWAmFfiuul2w3WfjQfOw79ptSFVLRCRNrjxpcJxlgSf4hV3De46jPq4X+f9gwjqTWfdyvu8/fa9iBwGfIfX+vD7wlTP395EgW+LxH0igLjlhiWQ4MSi6X8JcAtuzn5b77HvVPVW3MVmiMi8IAZ3VfVLEbkcl0iOx031vMvPmN7U2YuBt7zHrYACP2MWcbSqHrzj3aJLRIYCV+BmEVYFfsF1U/rpGOC0Io/DwF4+xwR3/QlAwyJxTRGWQIITi6b/UOBJVV3oc5x/8WbMDABSgAQRqauqB/gUqxJuzGUAbhA7HWimqpv9iFfEbcALwB/AzSJyDG5gO6iJEieLyIOqGlTCKnQS7sLQB3FX4I/1O6CqHuR3jKJEpLGq/oW7tshshyWQgKjqxd4v1ua4Yn/LAwj7BTDSm8XyLK6Gj99frABDcHPmL8N1Zx3nY6w/cP/QL1DVX0Xk/SDeo6rOw13dD4CIzAb2CrBGUj1guYj8jvsxElbVIwKIu1ZVc0UkzRtf8+2iOhF5RFWv9D7b4hNQ/Hyv13m3x/lnAgwEd61NuWEJJCDFiv2NB/bG52J/qvoK8IrXT/0gMBo3tdZva1V1tohcpqrjReTiHb8kYg/hBrH3FJGnCG4MAgARaYv7omkALBGR/gFdxHhqADFK8peI9AGyROQeXIvPL4VdkN19jPEfhVPOVbVT4bagrmcqb6yUSXC6436Jb1DVhyjy69UvIrKHiAzGTd/NxnU/BCHXqwicIiIn8O+SKlGlqiO8Lo6HcYnkUBEZISL7+xWzmIeBXqraGDeQ7XuXjicF934vAnrjxrp8IyK3eXf74y6EvRHXivbty90rDQNuJl0j3FjEM7h6WL4TkatF5FIRuRE3NfyBIOKWJ5ZAghOLYn+v4i6mO0pV+6jq7ABigqsGnIIrttcP16XlK1Wd6RW6aw78hRufCMLmwjEmr+URxOwgcOViwM3sawbU8TleZwDvIslhqpqpqmMCGl8bh/v3chtuckZQJXnOx12IehJuokDgkxbinXVhBaew2F9Tv4v9FRkE7Il3TUbhdEtV/cXHuEUL+hU2928hwNkr3rU2Y7ybb0Skn3d3i4iMxf3dtsPnYopFZKvqPSKyt6r2EZHPfI6XsI37QdgC/AhUUtU5IhLU91YsrmcqVyyBBCTgYn+Fg4Djim33exCwaKG/4lffV7TBx8JuucJWnQAZuGsVgpAgIg1xF0xWw42t+Sm8jftBCAMvAu+JSDeCqQAMsbmeqVyxYooBiUWxP6/I3lsB1WYqGjcmhf6CVNjKK6mMup+tPC92Oq47ZT/cOMRTwPOqeoOPMTNwrYAEL27hfd9nf3kl1dvhxvKOAb73yrkHRkRSKtr/w9FgLZDgBF7sDzdof5eIvAU8raq/+RSnuFgV+gtS8ametXEXEWbgY2vLm813PZAPXKWqHxDMOi8HBhBjW1Jw07X3xq0EOAbwPYGIyLm4EjGVcdPhR6nqfX7HLU8sgQQn0GJ/AN4c+krAGcAjIlJJVf28JqNQrAr9BWmCiHyLm013KvAYLnkM9TluD1x3WTpuokAgVXFV9c8g4mzD88Bw3MWir+CmpHfa7iui4wbgZNyqonvgLvy1BFKEzcIKTrqI7Avg/Znmc7G/Qu1wazg3IJiquMA/A+oBF/oL0jDgIq8m0924mTptgYE+x81R1TxvbZcgFiWLB8m4sYiaqjqZ4P5/KlwCOtNbhTEtoLjlhrVAglNY7K8RsAT3a8rPYn+IyEJgPvCUqvb1K06xmOm4L9HAC/0FLFFVv/f+Pqup6jcAIhLkoGLQs6FipRKubMqnItKJ4L63fge+Aq4SkduBuQHFLTcsgQREVb8EDim2+Sufwz6rqqN8jrHVNvrnK6rC1vuJuPEeRKQy/rcoW4lbUjahyH0AVLWijTMV6g10wa1pcwZuerrvVLW3iFRX1U1eUVC/l9AtdyyBBERELgQG4a1uBqCqflcUPUlEHgiw4F5M+udj5GMR+QJoApzuddU9Brzkc9xuRe4Xn6ZdoYhIW1X9Cneh5CLcDKwNuCvRfZsQIiK3qerd4tZhD4tI4faKnKQjYgkkOANxs62CrKcTdMG9HG9MYI03eF9hqeoIb3bb36q6tjCBqOrrPsed6efx48yxuFb6+cW2+13JunCd9wqdoKPBEkhwflPVRQHHjFXBPdgF+ufVrXNfeH8xbpq2iRJVHeH9ebE3tlZlBy+JVtz53t0luHVIisbdlRL4DlkCCU62iLzPv1dV87UAHq7QXnF3+hhvV+yfNz4TkedwNb8y+Ke6QZsAQr8JvAb4cqFvRWAJJDjvxSBm4aBfAu4fnN/TtneZ/nkTqH1VtXkM4i5V1TtiELfcsAQSnIm42SRNcDV2fvA7oKoWrU2F1wLyM541740fvhQRUVUNOO7bInIvsLXisKo+v539dzmWQIIzDndNRBfcwODzuKtcfVOsTlMj3NW0xpQ3GcA8EdnEP/W3GgUQtztu7ZOW3mMrHFiMJZDgNFfVviJylKq+LSKDAohZtE7TWtw1GsaUN52A2qqaH3DcXFW9POCY5YolkOAke1VFw94a5b5VyBWRNriLrorWaarKrlP6wlQsv+JK8SwLOO6fInIz8A3/THzxc/pwuWMJJDi3AV/g1pGYA/zPx1hb6zSJSGGdpkW4cthv+RjXGD8cCfwhImu8x0F1YaXgqkkXdgX7ff1JuWPrgQRMROoB6/1sjovIh6p6glenabaqNvW2f6aqR/kV15ggicgZqvpmDOI+Zl1bjlXjDYiInCsi3XED58tExLfFf9h2nSarJmoqkmtiFFdiFDfuWAIJzg3AR7hCcHvgrnD1S2GdpjuAMV6Zjbfxv06TMUGq8NUO4p0lkOAEtraAVwKiL9BaVQvX6H5MVe/xK6YxMWD97zFmg+jBCXRtAavTZIzxm7VAAqKqvYEDVPUdYJwNwhlTZrHqwrKuM48lkICIyNFABxE5GZglIlZc0JhSEJG+xR5f7d19wOe4aSLSTUQuLLx5Tx3vZ9zyxLqwgjMSuAB4FDevfQrw4nZfYcwuTETOx62h00lEOnubk4D9gYdV9e1tvjg63sSVHypcw6fwYsItPsctNyyBBGczrjpuvqqu9KbVGmO27QNgBVAHV5YHXAWHoMbzElU1kOVzyytLIMHZiLsmY6yIDMAtVmOM2QZVXQ/MAGaIyLHAXrjJJ+sCOoXvReQw/r2GT15AscsFSyDB6YYrqLhQRPYHnoz1CRlTHojIcKAxripuHnAz/13m1g/H8O/rtcK4JGY8lkCC0wQ4Q0S64mZxNAL6x/aUjCkXOqjq0SLyiao+J/9v7+5BvirDOI5/H3wh1HSyfBoazPgZBg5CRBikSzjZ0BstkYNDGG0GJZE0JDg8WBEOKlFhQ0tQQ0MOFdRQTgnxi5KEMAIretGyMhvuc/DPk+TDH+7zor/Pcs5zlute/lzPOfd9XZfUyQlG2xu7iDNmSSDdeY1SDb6ZsjG3ot/lRIzGYknXUTpZLwIu1Awm6WXbuyR9wrxiRdt31Yw9Nkkg3Tln+wVJt9reIemjvvzTFhAAAALCSURBVBcUMRJzwHFgNWUPZK5yvOeb68OV44xeEkh3ZiStAVZIWk4Z8hQRV2D7LUnvA+soHR2qvoHY/r65XQTsp7RzPwHsrhl3jFJI2AFJK4G9wH3AG5QfQdX55BFXC0kv2f7J9qfAJiq3AZpwGDhE+ex8FDjSUdzRyBtIZZJ2UUbJ/g08Yfs94IZ+VxUxKr9I2kfZN7ydMqagCxdst//ovSOp5hC4UUoCqe8RyvyAlcDrlOKoiFgg289I2g+ss31P7XiS2lYlZyXtBj4E7qAUAseEJJD6/miKj85IykzyiAWS9B2XTkHNADdKOg1QeaRtW2PyI6X25Lbm7/MVY45SEki30sUzYoFsz7b3kpbbPivpJtunK8d97HLPJc1e7vm1LAmkvg2SjlKSR3sPgO105I24AknPAqsoe4kHJH3WDE2rHXcv8DiwFFgGfAlsqB13TJJA6ntw4v5gb6uIGK/ttjcB2H6gGddcPYEA2ygtVOYoreNf6SDmqCSBVGb7g77XEDFy/0haavtPSUvorvzgB9vnJV1v+ytJyzqKOxpJIBExdAeBE5I+B9ZTZut04VtJOyinsfZRTlLGhJmLFzOXPiKGTdJqSifcr22f6SDeTuBVYBa4GdgIHLP9Re3YY5JK9IgYJEl7muubwAHgSeDFyYMoleI+Rxlbu9j2KcpEwq3A/TXjjlE+YUXEUN3dXLs+fLINuNN2O0TqG0kPAR9zqdFikAQSEcO1BHo5iPJbmzxatv+S9GvH6xi8JJCIGKpbmmmE/2H76Ypxf5e01vbJ9oGktcybDRJJIBExXOcA9xD3KeBtSceAk5RN9HuBR3tYy6DlFFZEDFIzwnZLT7FXAdspo6dPAe/aziesefIGEhFDdbyvwLZ/poyhjv+RN5CIiJhK6kAiImIqSSARETGVJJCIiJhKEkhEREwlCSQiIqbyL/alvD3KD/h+AAAAAElFTkSuQmCC\n",
      "text/plain": [
       "<Figure size 432x288 with 2 Axes>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "mask = np.zeros_like(correlations, dtype=np.bool)\n",
    "mask[np.triu_indices_from(mask)] = True \n",
    "sns.heatmap(correlations*100, annot=True, fmt='.0f', mask=mask)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## 数据清理"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 393,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "(891, 14)"
      ]
     },
     "execution_count": 393,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "df.drop_duplicates()\n",
    "df.shape"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 394,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "(891, 13)"
      ]
     },
     "execution_count": 394,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "df = df.drop('PassengerId', axis=1)\n",
    "df.shape"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 395,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>Survived</th>\n",
       "      <th>Pclass</th>\n",
       "      <th>Name</th>\n",
       "      <th>Sex</th>\n",
       "      <th>Age</th>\n",
       "      <th>SibSp</th>\n",
       "      <th>Parch</th>\n",
       "      <th>Ticket</th>\n",
       "      <th>Fare</th>\n",
       "      <th>Cabin</th>\n",
       "      <th>Embarked</th>\n",
       "      <th>Ticket_missing</th>\n",
       "      <th>Cabin_missing</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>0</th>\n",
       "      <td>0</td>\n",
       "      <td>3</td>\n",
       "      <td>Braund, Mr. Owen Harris</td>\n",
       "      <td>male</td>\n",
       "      <td>22.0</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "      <td>A/5 21171</td>\n",
       "      <td>7.2500</td>\n",
       "      <td>NaN</td>\n",
       "      <td>S</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>1</th>\n",
       "      <td>1</td>\n",
       "      <td>1</td>\n",
       "      <td>Cumings, Mrs. John Bradley (Florence Briggs Th...</td>\n",
       "      <td>female</td>\n",
       "      <td>38.0</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "      <td>PC 17599</td>\n",
       "      <td>71.2833</td>\n",
       "      <td>C85</td>\n",
       "      <td>C</td>\n",
       "      <td>0</td>\n",
       "      <td>1</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2</th>\n",
       "      <td>1</td>\n",
       "      <td>3</td>\n",
       "      <td>Heikkinen, Miss. Laina</td>\n",
       "      <td>female</td>\n",
       "      <td>26.0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>STON/O2. 3101282</td>\n",
       "      <td>7.9250</td>\n",
       "      <td>NaN</td>\n",
       "      <td>S</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>3</th>\n",
       "      <td>1</td>\n",
       "      <td>1</td>\n",
       "      <td>Futrelle, Mrs. Jacques Heath (Lily May Peel)</td>\n",
       "      <td>female</td>\n",
       "      <td>35.0</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "      <td>113803</td>\n",
       "      <td>53.1000</td>\n",
       "      <td>C123</td>\n",
       "      <td>S</td>\n",
       "      <td>0</td>\n",
       "      <td>1</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>4</th>\n",
       "      <td>0</td>\n",
       "      <td>3</td>\n",
       "      <td>Allen, Mr. William Henry</td>\n",
       "      <td>male</td>\n",
       "      <td>35.0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>373450</td>\n",
       "      <td>8.0500</td>\n",
       "      <td>NaN</td>\n",
       "      <td>S</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "</div>"
      ],
      "text/plain": [
       "   Survived  Pclass                                               Name  \\\n",
       "0         0       3                            Braund, Mr. Owen Harris   \n",
       "1         1       1  Cumings, Mrs. John Bradley (Florence Briggs Th...   \n",
       "2         1       3                             Heikkinen, Miss. Laina   \n",
       "3         1       1       Futrelle, Mrs. Jacques Heath (Lily May Peel)   \n",
       "4         0       3                           Allen, Mr. William Henry   \n",
       "\n",
       "      Sex   Age  SibSp  Parch            Ticket     Fare Cabin Embarked  \\\n",
       "0    male  22.0      1      0         A/5 21171   7.2500   NaN        S   \n",
       "1  female  38.0      1      0          PC 17599  71.2833   C85        C   \n",
       "2  female  26.0      0      0  STON/O2. 3101282   7.9250   NaN        S   \n",
       "3  female  35.0      1      0            113803  53.1000  C123        S   \n",
       "4    male  35.0      0      0            373450   8.0500   NaN        S   \n",
       "\n",
       "   Ticket_missing  Cabin_missing  \n",
       "0               0              0  \n",
       "1               0              1  \n",
       "2               0              0  \n",
       "3               0              1  \n",
       "4               0              0  "
      ]
     },
     "execution_count": 395,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "df.head()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 396,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "<matplotlib.axes._subplots.AxesSubplot at 0x26d1b382128>"
      ]
     },
     "execution_count": 396,
     "metadata": {},
     "output_type": "execute_result"
    },
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<Figure size 432x288 with 1 Axes>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "sns.boxplot(df.Age)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 397,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<Figure size 432x288 with 1 Axes>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    },
    {
     "data": {
      "text/plain": [
       "<matplotlib.axes._subplots.AxesSubplot at 0x26d1af129b0>"
      ]
     },
     "execution_count": 397,
     "metadata": {},
     "output_type": "execute_result"
    },
    {
     "data": {
      "image/png": "iVBORw0KGgoAAAANSUhEUgAAAV0AAAEBCAYAAADbxHY7AAAABHNCSVQICAgIfAhkiAAAAAlwSFlzAAALEgAACxIB0t1+/AAAADl0RVh0U29mdHdhcmUAbWF0cGxvdGxpYiB2ZXJzaW9uIDIuMi4yLCBodHRwOi8vbWF0cGxvdGxpYi5vcmcvhp/UCwAAHwFJREFUeJzt3XlwHHfd5/F39/TMSKPT1mHZ1mE7jlu+ElAOExKTg4RsYvOQhSxHwj4P8ASKrYcq4NlalisPD1s8VFFFoNiHzS4VnsDDbqgiHOGwExLOhAC5Qw7Z7ji+JDs+JMs6R5qju/ePGRn5jCXNdLfkz6tKFWmO/n1/ifKZ1u/3618bvu8jIiLBMMMuQETkfKLQFREJkEJXRCRACl0RkQApdEVEAmSd6QnbtpPAZcBBwA2sIhGRuS0GLAaedhwnc/KTZwxdCoH7h3JVJSIyz20EHj/5wbOF7kGA++67j5aWlnIVJSIyrxw6dIjbb78dihl6srOFrgvQ0tJCa2trGUoTEZnXTjssq4k0EZEAKXRFRAKk0BURCZBCV0QkQApdEZEAKXRFRAKk0BURCZBCV0QkQApdEZEAKXRFRAKk0BURCZBCV0QkQApdEZEAKXRFRAKk0BURCZBCV0QkQApdEZEAKXRFRAI0p0J3//79fPvb32ZiYiLsUkREZuRs90iLlB07dvDfPvUpRoaHaWlpYfPmzWGXJCIybXPiTPepp57i4x//BCNZ8Ctq+cWWLWGXJCIyI5EP3e7ubj79mc8wYVUxat9MpqkTZ8cOdu/eHXZpIiLTFvnQfeyxx/B8GF31H/ATKfINK8E0efDBB8MuTURk2iIfut3d3XipBrCSAPjxCnJ17fzy4YfJZrMhVyciMj2RDt1cLofjOOSrmk58vGkVoyMj/OlPfwqpMhGRmYl06O7atYtcLodbfWLourVLIFnNlq1bQ6pMRGRmIh2627ZtA8Ctaj7xCcMk07CSZ595hsOHD4dQmYjIzEQ6dLu7uzGSVfiJqlOeyy9cju/7PPfccyFUJiIyM5EO3Zde7iabagLDOOU5r6Iew0oePxsWEZkLIhu6AwMDHDl86JTx3OMMg1yqgW6FrojMIZEN3ckzWO/k8dwp3Kom9u7Zw/j4eFBliYjMSmRDt7u7G0wTt6rhjK9xq5vwPI9XXnklwMpERGYusqH7cnc3XmUDmGfek8crrt/dvn17UGWJiMxKJEM3n8+zY8eOUy6KOJkfr4SKWk2micicEcnQ3b17N7ls9syTaFPkUo283K3QFZG5IZKhOzlc4FafeRJtklvVxMDRfvr7+8tdlojIrEUydPfs2YNhJfAT1a/72smzYY3rishcEMnQ7e3dj5usPe1FESfzUgvBMDWuKyJzQiRDd1/PPtxk3bm92LTwdJGEiMwRkQvdTCZDf18fXkXtOb8nX9WEs8PBdd0yViYiMnuRC939+/cD4FWc45kuhXHdTGaCvXv3lqkqEZHSiFzo9vb2AtMM3apGQJNpIhJ9EQ7dcx9e8JO1GFaCnTt3lqssEZGSiGToGskqiMXP/U2GQb6ygR2OU77CRERKIHKh29PTQy557me5k9xUA7t27SKfz5ehKhGR0ohU6Pq+T09vL965Lhebwq1qIJ/LsW/fvjJUJiJSGpEK3aGhIdJjY9OaRJvkpgqTadrmUUSiLFKh29PTA0xvEm2SX1GLEYsrdEUk0iIVujNZo3ucYZBPLdRkmohEWqRCt7e3FwwTP/n6G92cjptq5NVXX9WVaSISWdEL3co6MGZWlptqIJfNHh+mEBGJmkiF7t59PeQSNTN+v1e8n5oukhCRqIpM6Lquy8HXDsxsPLfIq6jDiMVxNK4rIhEVmdA9dOgQruvOKnQxTNzKBVrBICKRFZnQnVy54M9gudhU+VQjr+zcied5pShLRKSkIhO6f12jO4szXQpXpmUmJo5vnCMiEiWRCd3e3l6MeBLfqpjVcbxUYTJNQwwiEkWRCd2enp5zvi/a2XiV9RixuO6ZJiKRFJnQ3dfTc+73RTsbwyRf1chLL708+2OJiJRYJEI3nU5zbGBg1uO5k/LVi9i9exfpdLokxxMRKZVIhO5MbtFzNm51M57nab2uiEROJEL3+MqFyhKFblUTAC+/rCEGEYmWSIRuYaMbA28Gd4w4LSuJn1qgcV0RiZzohG5FDZixkh0zV9XEy90v6yIJEYmUSITu3n37yCdKdJZb5FYvIj02ph3HRCRSQg9dz/PYv39/ySbRJrnVzYDGdUUkWkIP3SNHjpDLZkseun6yFiNeSXd3d0mPKyIyG6GHbqmXix1nGGSrmnjhxRdLe1wRkVmITuiWaLnYVF51M68dOMDg4GDJjy0iMhOhh25PTw+GlcC3Kkt+7MlxXe3DICJREXro9vb2FvZcmOVGN6fjVjWCGeP5558v+bFFRGYi9NDds3cf7iw3Lj8j0yJfs5g/PP44vu+Xpw0RkWkINXTHx8cZONpf+km0KfL17Rw6eJB9+/aVrQ0RkXMVauhO3qKnvKHbBsAf//jHsrUhInKuQg3dUt2i52z8RBVeVSOPK3RFJAJCDd2/rtEt05huUa6+nR3btzMwMFDWdkREXk+oobtnzx6oqAXTKms7+fo2fN/niSeeKGs7IiKvJ9TQ3bZtO7nKhrK341UuhGS1xnVFJHShhe7g4CB9fUcKa2nLzTDI1rXx1NNPk8lkyt+eiMgZhBa6k7fS8YIIXQpLx3LZLM8++2wg7YmInE5oobtjxw6AYM50AbemBcNK8MgjjwTSnojI6YQbuqkFEIsH06AZI9No8+ijj3LgwIFg2hQROUkooev7Ptu2BzOJNlV20Vp8w+T+++8PtF0RkUmhhG5fXx9Dg4OBDS1M8hMpsgsv4MEHH+TYsWOBti0iAiGFbtDjuVNlW9aTy+X48Y9/HHjbIiKhhK7jOGCYeKmFgbftV9aRq+/gJw88QDqdDrx9ETm/hRK627fvwE8tLPuVaGeSXbye9NgYP/3pT0NpX0TOX4GHru/77HB2kEsFO4k2lVfdjFvfxr/dey/bt28PrQ4ROf8EHroHDhwgPTYW2EURZ5JevhHXquTzn79Tk2oiEpjAQzfMSbQTWBWMrbiWgWOD/PMXv0g+nw+3HhE5L4QSukbMwqtcEHTTp/CqGkl3XMELf/kLd911l/ZlEJGyCzR0fd/niSefJJ9qAiP027MBkG+8kMzii3nooYe448MfZufOnWGXJCLzWKDJ9+qrr7K/t5fcwuVBNvu6sq2XkF71NvYf6uejH/0o99xzD4cOHQq7LBGZhwJds/WrX/0KTDNyoQvg1rUyvPYWKvb9mfvuu4/7vv99urq6eNsNN9DV1UVzc3PYJYrIPBBY6Lquy69+/Rtyta1gJYNqdnqsCiYuuJZM62XE+3fyXPcrPFfcCrJl8WIu6erisssuo6uri9ra8t5iSETmp8BC94UXXuDYwFHyF6wPqskZ85PVZJe+keySN2CODxAbPkTvyEEOP/wrtm7dimEYrF69hptvvonrrruOVCoVdskiMkcEFrq//vWvMWJx8nXtQTU5e4aBl2rASzWQa1nLhO9hjvZhDR+ge+8+tn31q/zrN7/J2264gdtuu43FixeHXbGIRFwgoZvJZPjd739Ptr4DYuFc+lsSholXs4hszSKyS96IOdZHts9hy9aH2Lr1QTZv3sT73/9+jf+KyBkFsnrhySefZDydJtdwQRDNBcMw8KqbySzfyMj6W5loXMXPt2zhtttu5+6772ZoaCjsCkUkgsoeur7v8/Of/xwjkcKtnZ9/fvuJFJmOKxhddyvj9cu4/4c/5L3vfR/f+973GBkZCbs8EYmQsofuT37yE5555hnGF62LzAUR5eInq5lYvpGxtbcwkmzk3nvv5V3vupWvf/3r7Nu3L+zyRCQCyjrAum3bNu6++27y9W3kFq0tZ1OR4lUuYPzC6zHTR8kd3sbPf7GFn/3sZ3QsW8abNmzgsssuY9WqVVp2JnIeKlvoDg8P809f+AJuPMX48reAYZSrqcjyUg1MLN9IpvVSrKOvsnvgAPt++CN+8IMfAFBTW8eyjnYWLVrEwoULaWhooL6+ntraWmpra6muriaVSlFVVUUymSQWi4XcIxGZrbKF7je+8Q2OHh1grHNTdC+GCIgfryTXsp5cy3pwc8RGD2OOHyM7PsTg3iNYr+6DTBrfO/tOZ2YsRtyKE7MsTNPENE1isRiWZWHFLZKJBFVVVVSlUlRXVx8P8oaGBlpaWmhpaaGxsRHTnN/DPCJRVrbQfWXnTrK1rTPfN9f3ifftwBrshckwcrMY+Sy+lYBY4szvNa3CkEZTZ/TOsGNx3LpW3LrWEx/3/WL/MsWvCQw3h+Fmwc1heHnwXSY8F3yv8Hp88D0M14O8B2MuRv9RTP8wppvByI7ju7kTmrEsi0UtLbQuXcrixYtpaWmhqamJ5uZm6uvrqauro7q6+qzB7Ps+2WyW0dFRhoeHGR4eZmhoiKGhIQYHBxkeHmZkZISRkRHS6TSZTIaJTIZ83gXAMAxM0yCZSJJIxEkmkyQSCZLJJPF4HMuyiMVimKaJ67p4nkc+nyeXy5HL5chms+TzeVzXxXU9LKvwwROPx0mlUtTU1FBdXU19fT319fUsXLiQurq641+WNYeXLcpZ5fN5stns8d8Vz/OOPzd5ghKPx0kkEqH9HpS31WkGntW/k3h/YZcvI5smlhk+4fmKigo2/81mtmzZwkR64OzHGtpP/FA3fmLmV4vlGi8k33jhjN8/LYYBVhLfSuKX8rhuDjM7hpEdxcyMYGZG2Ts2wv6XX8V89i/4+dJvZ2nE4hBP4pkJPDOOb8bAiOEfn0j1MfDAy4DvYnouBi6G52L4buEDxS98oGCYhX83hlE4hhnDw8Q3zOLxDAw8DL/wZXo5yGfwc9qmU2bnxhtv5NOf/jRGiU/cIvuRb7jZUx7bvHkzH/vYx/B9/5zu5mu4WXzO80t0Y3G8ilqM48EXwzRM8oZJzIhhjh+Dk86GZ8NIpHDjKbxYAr/4hRkDc2roAr6P4bngu/ieC56L4efB8wphi4/h+/iGARiF8DVNfKNwLKaELngYnge+W/jrIJYlZmVhfLBk/ZLzz569e/F9f36Hbn7KmWX8yHYq9v35hOe3bNmC7/ts3br1nI6XXdpFrrmz5HWWle+DlysMMbhZDDdXGHbw8sVg8sBzKQwtFL4MvxA4eC6GlysETz6LmR8nlh/Hz6aLwxEFpmnS2NRM67JWWloupampiaamJhYsWEBdXR01NTVUVlYe/3PfNE08z8PzPDKZDOPj44yPj591eGF4eJih4RHG08NkxrPksllcNw+GgQEYpkk8Hi9+JUimklQUhxmsuIU1ZXjB9TzyuTzZXJZsNks2O04+7+LmXVzXLYxpWxbxuEVVVRV1tYtOGF5YsGDB8aGTyf5VVVVRUVGh8e05zPd9crkcmUyGbDbLxMTE8e/PZXghmUxSUVFxwtBWqQP2dMoWuouaF7H/tRfJZEbwkzXTfn+uqRCWU8d0R90s9//iYXwrBTX1Z37z8TFde0a1l5uRGcUcP4Y5MYg5MYSZTRPLj2Pmx/GzE8UzvemLxWJUplJUVqaoqa+msWHxKRNpixcvZtGiRTMez6qurp7R+0RKzTAMEokEicRZ5nciqGyh+4//+En+/o47cHf9rrCCwZzmcifDINe8mlzz6vIUGCTfIzZ0AGtoP4nhAzDx17Hqmto6Fi1qprGhlYULF7JgwQJqamqOT2ilUilSqdTxT+STJ5qOr14ormgQkWgrW+guWbKEz37mM9x5550ke58i03FFuZqKrnyGRJ9Dsm8HZEZJJJJ0dXVx+eWFiyPa2tqoq6sLu0oRCVBZx3Q3btzIu9/9bu6//37cmkXkF64oZ3PRkc+QOPgiFX3b8d08b3jDG3jXu97Fhg0b5tyfQiJSWmWfSPvIRz7C88//hZ29zzGyYHn01s2WkpsncWQbFYdewnezvPWtb+V973sfF1wwj3ZXE5FZKXvoWpbFO9/5H/nKV76COdaHVz0P95r1XOJ9DhWHXoRsmss2bOAjH/4wK1euDLsyEYmYQJaMbdy4kbvu+hrxo7vJzKPQNXLjxPt3Hh+zveiii7njjr/noosuCrs0EYmoQEK3urqaK698M4/9+Sky7ZfP6S0ejdwEseHXsI7tIT7YC77H+vUX8YEP/B1dXV2BrPMTkbkrsIsjrr/+eh599FFiw6+duu9AlBU3qIkNHyQ+chBzrB+AmtpabvpPt7Jp0yY6OjpCLlJE5orAQnfDhg2kqqrIHd0V/dD1XKxj+0gc3Uls+GBhnW0sxurVq7n88r/h0ksvxbZtbbUoItMWWOgmEgmuveYaHvzlI0y4+WjeoNLzSBx8obDUKzdBY1MTN7z3PVxyySWsXbuWysrKsCsUkTku0OS7/vrr2bp1K9ZgD/mGaK3ZNccHqdzzGOZYP1dedRW33HILXV1duspLREoq0NC9+OKLaWho5PDArkiFrtW/k1TPn0lVVvKpL36Rq6++OuySRGSeCvQ0zjRNrrzyzcRHj5yw61WYYsOvUbn3cS5ev45//+53FLgiUlaB/+3c2dmJn89gnLRBeRiMzChVu39PW1sbX/7yl2lsnOFdLkREzlEooQsQKy69Co2XJ7Xrt1RYJv/ypS+RSp3nm52LSCACD9329nbiiQSxsb6gmz5BsucpzLF+Pve5z9Le3h5qLSJy/gg8dC3LYtWFq0I90zUmhkj07eDWW2/lqquuCq0OETn/hLIeavXqTqzxgRnfIWG2EodewrLi3HbbbaG0LyLnr1BCt7OzE9/NF26KGDAjmyZxdBc333wTCxcuDLx9ETm/hRa6EM5kWvxwN4bv8Z73vCfwtkVEQgndpUuXUplKHd88JjD5LBX9DldffTVLly4Ntm0REUIKXcMw6OzsJJ4+Gmi7ib4d+PmsxnJFJDShbSywurMTIz1w/PbqZef7JPu209XVxapVq4JpU0TkJKGFbmdnJ/geZnogkPbMsT7IjLFp06ZA2hMROZ1wQ5fgJtOswR7MWIzLL788kPZERE4ntNBtamqirr4+sNBNDPVy0UUXUVNTE0h7IiKnE1roGobBmtWriY+XfzLNmBjGSB/jqiuvLHtbIiJnE+oO3StWrIDxIfDKe2WaNdgDwJUKXREJWaih297eDr6HkRkpazvxwV6WLVvO4sWLy9qOiMjrCTV029raCkVMDJWvkXyG2OghrrpKZ7kiEr55H7rW0H7wfQ0tiEgkhBq6NTU11NbVYU4Mlq0N61gP9fULsG27bG2IiJyr0G9129HeTmyiTLfu8TwSIwe48so3666+IhIJoSdRR0cHVrY8oWuOD+Dns1x66aVlOb6IyHSFHrptbW342XHIZ0p+7NjoEQDWrl1b8mOLiMxEJEIXyjOZFhs9TENjE83NzSU/tojITIQeupM3hTTHSz+Zlhjr46L160p+XBGRmQo9dFtaWojFYiU/0zUyo/iZUdatU+iKSHSEHrqWZdGyeEnJQzc2VhjPVeiKSJSEHroAy5d1EM+W9lLg2OgREokkF1xwQUmPKyIyG5EI3ba2tsLGNyW8Jbs1eoTVq1djWVbJjikiMluRCN2Sb3zj5jDTR1mvSTQRiZhIhG6pl43FxvrB97U+V0QiZ36Gri6KEJGIikTo1tXVUV1TW9LQbW1rp7a2tiTHExEplUiELpRw4xvfJ57WRREiEk3RCd2OdqzM7M90jcwwfm6CNWvWlKAqEZHSikzolmrjm9hY4UaX2j9XRKIoUqELYM5yiCGWPkrMsli+fHkpyhIRKakIhu7shhhi6X5WrFihiyJEJJIiE7pLlizBMIzZha7vY40P0KmhBRGJqMiEbjwep3lRy6yGF4zMCH4uo/FcEYmsyIQuwLKO9lnduieWLkyiXXjhhaUqSUSkpCIVum1tbYUzXd+f0fvNsaPEYjFNoolIZEUudH03h5Edm9H7Y+l+li1fTiKRKHFlIiKlEbnQBTAzMxhi8H3imkQTkYiLZujOYAWDkR3Dz02watWqUpclIlIykQrdxsZGksmKGYVubKwfQKErIpEWqdA1DIPW1tYZha6ZPoppmqxYsaIMlYmIlEakQhegvb2N+AzuIBFL99PesYxkMlmGqkRESiOCoduOPzEMnnvubypOoq3u1CSaiERb5EK3tbUVmN4KBiM7hp8d10URIhJ5kQvdmaxgmJxE6+zsLEtNIiKlMk9Ct4+YZbFy5cpylSUiUhKRC92qqirq6hdMa+Ob2FgfK1eu1JVoIhJ5kQtdKNy655zPdH0PK93POt35V0TmgEiGbntbG1b23JaNmePH8N08q1evLnNVIiKzF8nQ7ejowM+OY+TSr/va2GgfgEJXROaESIbu5CqEyUA9m9hYHzU1tSxZsqTcZYmIzFokQ3fVqlXEYjHM0SOv+9p4up81a1ZjGEYAlYmIzE4kQzeZTLJy5YVYY69zputmIX2MNWvWBFOYiMgsRTJ0AdatW4uV7gffO+NrJi+KUOiKyFwR2dBds2YNvpvHTA+c8TWTY766Ek1E5opIhy4UJsrOxBzrY2lrKzU1NUGVJSIyK5EN3ZaWFurqFxA702Sa75PQRREiMsdENnQNw2D9urXE0/2nfz47ip9Na32uiMwpkQ1dgLVr18L4EEZu/JTnrGP7AHjjG98YdFkiIjMW/dClMHZ7At8neXQndmcnHR0dIVQmIjIzkQ7dVatWYcZip4zrmmN9GOljvH3z5pAqExGZmUiHbkVFBStWrMA66XLgeP8rJBJJrr322pAqExGZmUiHLsC6tcWLJLziRRJujuTAHq677lqqqqrCLU5EZJoiH7obNmzAd3NU7voNuHmsgT34bo5NmzaFXZqIyLRFPnSvuOIKPvnJT2IN7adq5y9J9u1gaWsr69atC7s0EZFpi3zoArzjHe/gn7/wBeLjA5hj/bx982btKiYic5IVdgHn6pprrqGuro4HHniAm266KexyRERmZM6ELhQuhNDFECIyl82J4QURkflCoSsiEiCFrohIgBS6IiIBUuiKiARIoSsiEiCFrohIgBS6IiIBUuiKiARIoSsiEiCFrohIgBS6IiIBUuiKiARIoSsiEiCFrohIgBS6IiIBUuiKiARIoSsiEqCz3a4nBnDo0KGAShERmfumZGbsdM+fLXQXA9x+++0lLklE5LywGNh18oNnC92ngY3AQcAtU1EiIvNNjELgPn26Jw3f94MtR0TkPKaJNBGRAJ1teCFQtm2bwN3AxUAGuMNxnFfDrWr6bNveAHzFcZxrbNteCXwX8IGXgX9wHMezbfsLwCYgD3zCcZynQiv4ddi2HQfuBZYBSeBLwDbmfr9iwD2ATWH47IOAwRzv1yTbtpuBZ4EbKNT9XeZHv54Hhoo/7gG+BXyDQh8ecRzni1HPkiid6d4CVDiOcwXwaeCukOuZNtu2PwV8G6goPvQ14POO42yk8D/0O2zb7gKuBjYA7wX+Vxi1TsP7gaPFPtwEfJP50a+3AziOcyXwTxT6NB/6NflB+S1gvPjQfOlXBYDjONcUvz4I/B/gNuAqYEOxX5HOkiiF7lXALwEcx3kCuDTccmZkF/DOKT9fAjxa/P4h4HoK/XzEcRzfcZwewLJtuynYMqflh8CdU37OMw/65TjOT4GPFH/sAA4zD/pV9FUKYfRa8ef50q+LgZRt24/Ytv1b27bfAiQdx9nlOI4PPAy8lYhnSZRCt5a//tkA4Nq2HZnhj3PhOM6PgdyUh4ziLwPACFDHqf2cfDySHMcZdRxnxLbtGuBHwOeZB/0CcBwnb9v2vwP/SqFvc75ftm1/AOhzHOfhKQ/P+X4VpSl8oNwIfBT4TvGxSWfqW6SyJEqhOwzUTPnZdBwnH1YxJeJN+b4GGOTUfk4+Hlm2bbcBvwP+r+M432ee9AvAcZy/A1ZRGN+tnPLUXO3Xh4AbbNv+PfAG4HtA85Tn52q/AF4B/l/x7PwVCsG6cMrzZ+pbpLIkSqH7R+BmANu23wS8FG45JfG8bdvXFL+/CfgDhX7eaNu2adt2O4VfiP6wCnw9tm0vAh4B/rvjOPcWH54P/frPtm1/pvhjmsIHyTNzvV+O47zFcZyrHce5BvgL8LfAQ3O9X0Ufojg+a9v2EiAFjNm2fYFt2waFM+DJvkU2SyJzyg08QOET+k8UBvs/GHI9pfBfgXts204A24EfOY7j2rb9B+DPFD70/iHMAs/BZ4EFwJ22bU+O7X4c+J9zvF8/Ab5j2/ZjQBz4BIW+zPX/XqczH34PAf4N+K5t249TWInxIQoflvdRuCDhEcdxnrRt+2kinCW6OEJEJEBRGl4QEZn3FLoiIgFS6IqIBEihKyISIIWuiEiAorRkTAQA27aXAS8Cz015+LeO4/yPcCoSKR2FrkTVtuICf5F5RaErc0JxK8ZvAW1AA/CQ4zh32rb93eLPDRS2KfwU8BYKQ2dfcxznh+FULHJ6GtOVqFpj2/bvJ7+ANwFPOI5zI4VdpP7LlNf+1nGcNxdfs7y4XeO1wOds264PunCRs9GZrkTVCcMLtm3XAn9r2/a1FDY0SU55rVP853rgkmJIQ+Hy3g6iv5GLnEd0pitzxQeAQcdxbqew6UmquMkJ/HXXsx3A74phfR1wP7A74DpFzkqhK3PFb4Cbi5uY/G9gJ7DkpNf8AhgtbuTyLOA7jjMSbJkiZ6cNb0REAqQzXRGRACl0RUQCpNAVEQmQQldEJEAKXRGRACl0RUQCpNAVEQmQQldEJED/Hw7xosegUfJNAAAAAElFTkSuQmCC\n",
      "text/plain": [
       "<Figure size 432x288 with 1 Axes>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "sns.boxplot(df.Fare)\n",
    "plt.show()\n",
    "sns.violinplot(df.Fare)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 398,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "679    512.3292\n",
       "258    512.3292\n",
       "737    512.3292\n",
       "341    263.0000\n",
       "438    263.0000\n",
       "Name: Fare, dtype: float64"
      ]
     },
     "execution_count": 398,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "df.Fare.sort_values(ascending=False).head()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 399,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "630    80.0\n",
       "851    74.0\n",
       "96     71.0\n",
       "493    71.0\n",
       "116    70.5\n",
       "Name: Age, dtype: float64"
      ]
     },
     "execution_count": 399,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "df.Age.sort_values(ascending=False).head()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 400,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "Age_group\n",
       "(0, 12]     0.579710\n",
       "(12, 18]    0.428571\n",
       "(18, 40]    0.388235\n",
       "(40, 60]    0.390625\n",
       "(60, 80]    0.227273\n",
       "Name: Survived, dtype: float64"
      ]
     },
     "execution_count": 400,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "bins = [0, 12, 18, 40, 60, 80]\n",
    "df['Age_group'] = pd.cut(df['Age'], bins)\n",
    "df.groupby('Age_group')['Survived'].mean()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 401,
   "metadata": {},
   "outputs": [],
   "source": [
    "df['Title'] = df.Name.str.extract('(M[A-Za-z]+)\\.')"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 402,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "<matplotlib.axes._subplots.AxesSubplot at 0x26d1ae8f710>"
      ]
     },
     "execution_count": 402,
     "metadata": {},
     "output_type": "execute_result"
    },
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<Figure size 432x288 with 1 Axes>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "sns.countplot(y='Title', data=df)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 403,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "Title\n",
       "Major       2\n",
       "Master     40\n",
       "Miss      182\n",
       "Mlle        2\n",
       "Mme         1\n",
       "Mr        517\n",
       "Mrs       125\n",
       "Ms          1\n",
       "Name: Title, dtype: int64"
      ]
     },
     "execution_count": 403,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "df.groupby('Title').Title.count()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 404,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "(864, 15)"
      ]
     },
     "execution_count": 404,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "df = df[df.Title.notnull()]\n",
    "df = df[df.Title != 'Ms']\n",
    "df = df[df.Title != 'Mme']\n",
    "df = df[df.Title != 'Mlle']\n",
    "df = df[df.Title != 'Major']\n",
    "df.shape"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 405,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "array(['Mr', 'Mrs', 'Miss', 'Master'], dtype=object)"
      ]
     },
     "execution_count": 405,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "df.Title.unique()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 406,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "Name          0\n",
       "Sex           0\n",
       "Ticket        0\n",
       "Cabin       673\n",
       "Embarked      2\n",
       "Title         0\n",
       "dtype: int64"
      ]
     },
     "execution_count": 406,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "df.select_dtypes(include='object').isnull().sum()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 407,
   "metadata": {},
   "outputs": [],
   "source": [
    "df = df[df.Embarked.notnull()]"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 408,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>Survived</th>\n",
       "      <th>Pclass</th>\n",
       "      <th>Name</th>\n",
       "      <th>Sex</th>\n",
       "      <th>Age</th>\n",
       "      <th>SibSp</th>\n",
       "      <th>Parch</th>\n",
       "      <th>Ticket</th>\n",
       "      <th>Fare</th>\n",
       "      <th>Cabin</th>\n",
       "      <th>Embarked</th>\n",
       "      <th>Ticket_missing</th>\n",
       "      <th>Cabin_missing</th>\n",
       "      <th>Age_group</th>\n",
       "      <th>Title</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "  </tbody>\n",
       "</table>\n",
       "</div>"
      ],
      "text/plain": [
       "Empty DataFrame\n",
       "Columns: [Survived, Pclass, Name, Sex, Age, SibSp, Parch, Ticket, Fare, Cabin, Embarked, Ticket_missing, Cabin_missing, Age_group, Title]\n",
       "Index: []"
      ]
     },
     "execution_count": 408,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "df[df.Embarked.isnull()]"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 409,
   "metadata": {},
   "outputs": [],
   "source": [
    "df = df.drop(['Name','Ticket', 'Age'], axis=1)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 410,
   "metadata": {},
   "outputs": [],
   "source": [
    "df.replace('male', 1, inplace=True)\n",
    "df.replace('female', 0, inplace=True)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 411,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "<matplotlib.axes._subplots.AxesSubplot at 0x26d1ade2cf8>"
      ]
     },
     "execution_count": 411,
     "metadata": {},
     "output_type": "execute_result"
    },
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<Figure size 432x288 with 1 Axes>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "df.Fare.hist()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 412,
   "metadata": {},
   "outputs": [],
   "source": [
    "df['Fare_group'] = pd.cut(df.Fare, [0, 50, 100, 520])"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 413,
   "metadata": {},
   "outputs": [],
   "source": [
    "df.drop('Fare', axis=1, inplace=True)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 414,
   "metadata": {},
   "outputs": [],
   "source": [
    "df.drop('Cabin', axis=1, inplace=True)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 415,
   "metadata": {},
   "outputs": [],
   "source": [
    "df = pd.get_dummies(df, columns=['Embarked', 'Title'])"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 416,
   "metadata": {},
   "outputs": [],
   "source": [
    "df = pd.get_dummies(df, columns=['Age_group', 'Fare_group'])"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {},
   "outputs": [],
   "source": []
  },
  {
   "cell_type": "code",
   "execution_count": 417,
   "metadata": {},
   "outputs": [],
   "source": [
    "df.to_csv('titanic_train_processed.csv')"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## 模型训练"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 418,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "689 173 689 173\n"
     ]
    }
   ],
   "source": [
    "from sklearn.model_selection import train_test_split \n",
    "\n",
    "y = df.Survived\n",
    "X = df.drop('Survived', axis=1)\n",
    "X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2, random_state=1234)\n",
    "print(len(X_train), len(X_test), len(y_train), len(y_test))"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 419,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>Pclass</th>\n",
       "      <th>Sex</th>\n",
       "      <th>SibSp</th>\n",
       "      <th>Parch</th>\n",
       "      <th>Ticket_missing</th>\n",
       "      <th>Cabin_missing</th>\n",
       "      <th>Embarked_C</th>\n",
       "      <th>Embarked_Q</th>\n",
       "      <th>Embarked_S</th>\n",
       "      <th>Title_Master</th>\n",
       "      <th>...</th>\n",
       "      <th>Title_Mr</th>\n",
       "      <th>Title_Mrs</th>\n",
       "      <th>Age_group_(0, 12]</th>\n",
       "      <th>Age_group_(12, 18]</th>\n",
       "      <th>Age_group_(18, 40]</th>\n",
       "      <th>Age_group_(40, 60]</th>\n",
       "      <th>Age_group_(60, 80]</th>\n",
       "      <th>Fare_group_(0, 50]</th>\n",
       "      <th>Fare_group_(50, 100]</th>\n",
       "      <th>Fare_group_(100, 520]</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>count</th>\n",
       "      <td>689.000000</td>\n",
       "      <td>689.000000</td>\n",
       "      <td>689.000000</td>\n",
       "      <td>689.000000</td>\n",
       "      <td>689.0</td>\n",
       "      <td>689.000000</td>\n",
       "      <td>689.000000</td>\n",
       "      <td>689.000000</td>\n",
       "      <td>689.000000</td>\n",
       "      <td>689.000000</td>\n",
       "      <td>...</td>\n",
       "      <td>689.000000</td>\n",
       "      <td>689.000000</td>\n",
       "      <td>689.000000</td>\n",
       "      <td>689.000000</td>\n",
       "      <td>689.000000</td>\n",
       "      <td>689.000000</td>\n",
       "      <td>689.000000</td>\n",
       "      <td>689.000000</td>\n",
       "      <td>689.000000</td>\n",
       "      <td>689.000000</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>mean</th>\n",
       "      <td>2.323657</td>\n",
       "      <td>0.650218</td>\n",
       "      <td>0.538462</td>\n",
       "      <td>0.406386</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.219158</td>\n",
       "      <td>0.177068</td>\n",
       "      <td>0.089985</td>\n",
       "      <td>0.732946</td>\n",
       "      <td>0.044993</td>\n",
       "      <td>...</td>\n",
       "      <td>0.605225</td>\n",
       "      <td>0.146589</td>\n",
       "      <td>0.079826</td>\n",
       "      <td>0.084180</td>\n",
       "      <td>0.478955</td>\n",
       "      <td>0.127721</td>\n",
       "      <td>0.024673</td>\n",
       "      <td>0.799710</td>\n",
       "      <td>0.114659</td>\n",
       "      <td>0.066763</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>std</th>\n",
       "      <td>0.825488</td>\n",
       "      <td>0.477248</td>\n",
       "      <td>1.105766</td>\n",
       "      <td>0.831967</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.413977</td>\n",
       "      <td>0.382004</td>\n",
       "      <td>0.286369</td>\n",
       "      <td>0.442742</td>\n",
       "      <td>0.207439</td>\n",
       "      <td>...</td>\n",
       "      <td>0.489157</td>\n",
       "      <td>0.353953</td>\n",
       "      <td>0.271220</td>\n",
       "      <td>0.277859</td>\n",
       "      <td>0.499920</td>\n",
       "      <td>0.334022</td>\n",
       "      <td>0.155241</td>\n",
       "      <td>0.400508</td>\n",
       "      <td>0.318841</td>\n",
       "      <td>0.249793</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>min</th>\n",
       "      <td>1.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>...</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>0.000000</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>25%</th>\n",
       "      <td>2.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>...</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>1.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>0.000000</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>50%</th>\n",
       "      <td>3.000000</td>\n",
       "      <td>1.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>1.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>...</td>\n",
       "      <td>1.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>1.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>0.000000</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>75%</th>\n",
       "      <td>3.000000</td>\n",
       "      <td>1.000000</td>\n",
       "      <td>1.000000</td>\n",
       "      <td>1.000000</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>1.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>...</td>\n",
       "      <td>1.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>1.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>1.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>0.000000</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>max</th>\n",
       "      <td>3.000000</td>\n",
       "      <td>1.000000</td>\n",
       "      <td>8.000000</td>\n",
       "      <td>6.000000</td>\n",
       "      <td>0.0</td>\n",
       "      <td>1.000000</td>\n",
       "      <td>1.000000</td>\n",
       "      <td>1.000000</td>\n",
       "      <td>1.000000</td>\n",
       "      <td>1.000000</td>\n",
       "      <td>...</td>\n",
       "      <td>1.000000</td>\n",
       "      <td>1.000000</td>\n",
       "      <td>1.000000</td>\n",
       "      <td>1.000000</td>\n",
       "      <td>1.000000</td>\n",
       "      <td>1.000000</td>\n",
       "      <td>1.000000</td>\n",
       "      <td>1.000000</td>\n",
       "      <td>1.000000</td>\n",
       "      <td>1.000000</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "<p>8 rows × 21 columns</p>\n",
       "</div>"
      ],
      "text/plain": [
       "           Pclass         Sex       SibSp       Parch  Ticket_missing  \\\n",
       "count  689.000000  689.000000  689.000000  689.000000           689.0   \n",
       "mean     2.323657    0.650218    0.538462    0.406386             0.0   \n",
       "std      0.825488    0.477248    1.105766    0.831967             0.0   \n",
       "min      1.000000    0.000000    0.000000    0.000000             0.0   \n",
       "25%      2.000000    0.000000    0.000000    0.000000             0.0   \n",
       "50%      3.000000    1.000000    0.000000    0.000000             0.0   \n",
       "75%      3.000000    1.000000    1.000000    1.000000             0.0   \n",
       "max      3.000000    1.000000    8.000000    6.000000             0.0   \n",
       "\n",
       "       Cabin_missing  Embarked_C  Embarked_Q  Embarked_S  Title_Master  \\\n",
       "count     689.000000  689.000000  689.000000  689.000000    689.000000   \n",
       "mean        0.219158    0.177068    0.089985    0.732946      0.044993   \n",
       "std         0.413977    0.382004    0.286369    0.442742      0.207439   \n",
       "min         0.000000    0.000000    0.000000    0.000000      0.000000   \n",
       "25%         0.000000    0.000000    0.000000    0.000000      0.000000   \n",
       "50%         0.000000    0.000000    0.000000    1.000000      0.000000   \n",
       "75%         0.000000    0.000000    0.000000    1.000000      0.000000   \n",
       "max         1.000000    1.000000    1.000000    1.000000      1.000000   \n",
       "\n",
       "               ...              Title_Mr   Title_Mrs  Age_group_(0, 12]  \\\n",
       "count          ...            689.000000  689.000000         689.000000   \n",
       "mean           ...              0.605225    0.146589           0.079826   \n",
       "std            ...              0.489157    0.353953           0.271220   \n",
       "min            ...              0.000000    0.000000           0.000000   \n",
       "25%            ...              0.000000    0.000000           0.000000   \n",
       "50%            ...              1.000000    0.000000           0.000000   \n",
       "75%            ...              1.000000    0.000000           0.000000   \n",
       "max            ...              1.000000    1.000000           1.000000   \n",
       "\n",
       "       Age_group_(12, 18]  Age_group_(18, 40]  Age_group_(40, 60]  \\\n",
       "count          689.000000          689.000000          689.000000   \n",
       "mean             0.084180            0.478955            0.127721   \n",
       "std              0.277859            0.499920            0.334022   \n",
       "min              0.000000            0.000000            0.000000   \n",
       "25%              0.000000            0.000000            0.000000   \n",
       "50%              0.000000            0.000000            0.000000   \n",
       "75%              0.000000            1.000000            0.000000   \n",
       "max              1.000000            1.000000            1.000000   \n",
       "\n",
       "       Age_group_(60, 80]  Fare_group_(0, 50]  Fare_group_(50, 100]  \\\n",
       "count          689.000000          689.000000            689.000000   \n",
       "mean             0.024673            0.799710              0.114659   \n",
       "std              0.155241            0.400508              0.318841   \n",
       "min              0.000000            0.000000              0.000000   \n",
       "25%              0.000000            1.000000              0.000000   \n",
       "50%              0.000000            1.000000              0.000000   \n",
       "75%              0.000000            1.000000              0.000000   \n",
       "max              1.000000            1.000000              1.000000   \n",
       "\n",
       "       Fare_group_(100, 520]  \n",
       "count             689.000000  \n",
       "mean                0.066763  \n",
       "std                 0.249793  \n",
       "min                 0.000000  \n",
       "25%                 0.000000  \n",
       "50%                 0.000000  \n",
       "75%                 0.000000  \n",
       "max                 1.000000  \n",
       "\n",
       "[8 rows x 21 columns]"
      ]
     },
     "execution_count": 419,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "X_train.describe()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 420,
   "metadata": {},
   "outputs": [],
   "source": [
    "from sklearn.pipeline import make_pipeline \n",
    "from sklearn.preprocessing import StandardScaler \n",
    "# from sklearn.linear_model import \n",
    "from sklearn.ensemble import RandomForestRegressor \n",
    "\n",
    "pipelines = {\n",
    "    'rf': make_pipeline(StandardScaler(), RandomForestRegressor(random_state=123))\n",
    "}"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 421,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "rf\n"
     ]
    }
   ],
   "source": [
    "for key, value in pipelines.items():\n",
    "    print(key)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 422,
   "metadata": {},
   "outputs": [],
   "source": [
    "rf_hyperparameters = {\n",
    "    'randomforestregressor__n_estimators': [100, 200],\n",
    "    'randomforestregressor__max_features': ['auto', 'sqrt', 0.33]\n",
    "}"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 423,
   "metadata": {},
   "outputs": [],
   "source": [
    "from sklearn.model_selection import GridSearchCV\n",
    "\n",
    "model = GridSearchCV(pipelines['rf'], rf_hyperparameters)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 424,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "GridSearchCV(cv=None, error_score='raise',\n",
       "       estimator=Pipeline(memory=None,\n",
       "     steps=[('standardscaler', StandardScaler(copy=True, with_mean=True, with_std=True)), ('randomforestregressor', RandomForestRegressor(bootstrap=True, criterion='mse', max_depth=None,\n",
       "           max_features='auto', max_leaf_nodes=None,\n",
       "           min_impurity_decr...timators=10, n_jobs=1,\n",
       "           oob_score=False, random_state=123, verbose=0, warm_start=False))]),\n",
       "       fit_params=None, iid=True, n_jobs=1,\n",
       "       param_grid={'randomforestregressor__n_estimators': [100, 200], 'randomforestregressor__max_features': ['auto', 'sqrt', 0.33]},\n",
       "       pre_dispatch='2*n_jobs', refit=True, return_train_score='warn',\n",
       "       scoring=None, verbose=0)"
      ]
     },
     "execution_count": 424,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "model.fit(X_train, y_train)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 442,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "0.7976878612716763"
      ]
     },
     "execution_count": 442,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "pred = model.predict(X_test).round()\n",
    "(pred == y_test).mean()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 443,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "0.38147709136027086"
      ]
     },
     "execution_count": 443,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "model.best_score_"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 444,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "R^2: 0.16019417475728126\n",
      "MAE: 0.2023121387283237\n"
     ]
    }
   ],
   "source": [
    "from sklearn.metrics import r2_score, mean_absolute_error\n",
    "\n",
    "print('R^2:', r2_score(y_test, pred))\n",
    "print('MAE:', mean_absolute_error(y_test, pred))"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {},
   "outputs": [],
   "source": []
  }
 ],
 "metadata": {
  "kernelspec": {
   "display_name": "Python 3",
   "language": "python",
   "name": "python3"
  },
  "language_info": {
   "codemirror_mode": {
    "name": "ipython",
    "version": 3
   },
   "file_extension": ".py",
   "mimetype": "text/x-python",
   "name": "python",
   "nbconvert_exporter": "python",
   "pygments_lexer": "ipython3",
   "version": "3.6.5"
  }
 },
 "nbformat": 4,
 "nbformat_minor": 2
}
